Изменить значение перечислителя в 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. Есть ли способ объявить динамические перечислители?, которые меняют значения каждый раз, когда я изменяю значения моих переменных? Спасибо.

1 ответ

Решение

Когда ты пишешь b = (a..a+6).step(3) выражение оценивается примерно так: b = (0..6).step(3), изменения a после этой строки не изменится b, Если вы хотите изменить b вам нужно как-то переназначить его, самый простой способ - после того, как вы изменили a 1 повторить назначение b = (a..a+6).step(3)

Другие вопросы по тегам