Programming Ruby 里面47页有关的迭代计算和我的理解不一样,请问原因何在呢?(新手,请多指教)

我在日本东京,有很多不便,还请多多指教。

def fib_up_to(max)
i1, i2=1, 1

while i1 <= max
yield i1
i1, i2 = i2, i1+i2 # [color=red]这里应该等于 i1 = i2 and i2 = (i1 + i2) 吧?[/color]

end
end
fib_up_to(1000) {|f| print f, "" } #[color=red]这里的f应该指的就是 i1 吧?[/color]

运行的结果是

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

但是按照我的理解,迭代的结果应该是

第一次 i1 = 1 i2 = 1
第二次 i1 = (i2 == 1) i2 = (i1 + i2 == 2)
第三次 i1 = (i2 == 2) i2 = (i1 + i2 == 2 + 2 == 4)
第四次 i1 = (i2 == 4) i2 = (i1 + i2 == 4 + 4 == 8)
......

所以我认为答案应该是(对i1的迭代输出):
1 1 2 4 8 16 .....

我的理解错在哪里呢?

嗯,并行赋值是一步操作,和分开赋值是不同的。

a, b = b, a+b

相当于:

a, b = [b, a+b]

并行赋值那里应该是这样:右边=i2,i1+i2=1,2
左边:
i1,i2=1,2