0

我在 irb 中有这段代码:

2.2.1 :001 > a = 0
=> 0 
2.2.1 :002 > b = (a..a+6).step(3)
=> #<Enumerator: 0..6:step(3)> 
2.2.1 :004 > puts b.inspect
#<Enumerator: 0..6:step(3)>
=> nil 
2.2.1 :005 > a = 1
=> 1 
2.2.1 :007 > puts b.inspect
#<Enumerator: 0..6:step(3)>
=> nil 

我想要实现的是在a每次迭代时更改值,但a保持相同的值,更糟糕的是,Ruby 只是将值更改a为 0。有没有办法声明动态枚举器?,每次我都会改变值改变我的变量的值?谢谢你。

4

1 回答 1

1

当您编写b = (a..a+6).step(3)表达式时,大致评估为:b = (0..6).step(3). 在此行之后更改a,不会更改b。如果要更改b,则需要以某种方式重新分配它,最简单的方法是在更改a为 1 之后重复分配b = (a..a+6).step(3)

于 2015-10-07T05:37:07.197 回答