В ruby настоятельно рекомендуется не использовать for
, while
и until
, если вы не знаете, что и почему вы делаете.
Я с трудом представляю себе реальную проблему, когда нужно что-то сделать специальное на первых двух элементах Enumerable
(это, возможно, означает архитектурную проблему), но вместо этого:
enum.next
enum.next
loop do
begin
puts enum.next
rescue StopIteration
break
end
end
Обновление: rescue
там не нужно, см. Разъяснение в ответе @ TomLord.
Вам лучше сделать это:
enum.with_index do |element, idx|
print "First " if idx == 0
print "Second " if idx == 1
puts element
end
Внутренние элементы
Iterator
почти никогда не должны вызываться явно, вместо этого используйте эффективную и идиоматическую итерацию, отображение и сокращение.