先看代码:

class Fixnum < Integer  
  def fib  
    a = [1,1];
    2.upto(self-1){|i| a[i] = a[i-1] + a[i-2]};
    a  
  end  
end  

puts 11.fib.to_s
输出结果: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

下面解释代码的含义:
首先使用【打开类】技术,打开已有的Fixnum类,添加一个名为fib的方法,这样所有的Fixnum对象,比如1,2,3等数字都自动拥有了fib方法。
方法第一行先定义一个数组,初始化两个数字【1,1】
方法第二行,是一个循环,从2开始,到调用者大小减1结束,这里self的意思就是接收者,也就是调用者,比如你调用11.fib,那么self就是11
每次循环时,执行一个代码块,就是{}中间的部分,这里 i 是这个代码块接收的参数,也就是从2到self-1的每一个数字。
然后,将当前数组元素赋值为前两个数组元素之和。
最后返回这个数组a。