Я согласен с Питером , что в Ruby есть и другие (более идиоматические) способы сделать это, но для ясности: сообщение об ошибке, которое вы видели, неверно направило вас. С вашей while
петлей как таковой не было ничего плохого. Проблема была i++
, так как в Ruby нет оператора ++
.
Это будет прекрасно работать:
limit = 10
i = 0
while i < limit
puts i
i += 1
end
Опять же, я не рекомендую его, но если вы просто изучаете язык, это может помочь узнать, где на самом деле была проблема.
В Ruby есть много встроенных способов итерации, отличных от for
или while
(которые, как я могу судить, обычно бывают реже). Несколько других примеров:
(1..10).each do |x| # 1..10 is a range which you can iterate over with each
puts x
end
1.upto(10) { |x| puts x } # Integers have upto and downto methods that can be useful