更改 Ruby 中枚举器的值

Change value of Enumerator in Ruby

我在 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。有没有办法声明动态枚举器?每次我更改变量值时都会更改值的枚举器? 谢谢。

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