2
Следующий код работает:Что недействительно в Ruby?
collection.each do |i|
begin
next if i > 10
i += 1
rescue
puts "could not process #{ i }"
end
end
Однако, когда мы реорганизовать:
collection.each do |i|
begin
increment i
rescue
puts "could not process #{ i }"
end
end
def increment i
next if i > 10
i += 1
end
Я получаю invalid next
ошибку. Это ограничение Ruby (1.9.3)?
Работает ли блок begin rescue
, если существует исключение в методе инкремента?
Мой вопрос - что он ожидает от «следующего»? –
Да, это упрощенный пример. Если бы я опубликовал производственный код, это заслонит вопрос. –
Это не «ограничение», это дизайнерское решение и * хороший * один. Вы не должны * переносить «следующий» из контекста цикла. Вы не можете ни на каком другом языке. – meagar