Используйте ключевое слово next
. Если вы не хотите переходить к следующему пункту, используйте break
.
Когда next
используется внутри блока, это приводит к немедленному завершению работы блока, возвращая управление методу итератора, который затем может начать новую итерацию, снова вызывая блок:
f.each do |line| # Iterate over the lines in file f
next if line[0,1] == "#" # If this line is a comment, go to the next
puts eval(line)
end
При использовании в блоке break
передает управление из блока, из итератора, который вызвал блок, и в первое выражение после вызова итератора:
f.each do |line| # Iterate over the lines in file f
break if line == "quit\n" # If this break statement is executed...
puts eval(line)
end
puts "Good bye" # ...then control is transferred here
И, наконец, использование return
в блоке:
return
всегда вызывает возврат метода вложения, независимо от того, насколько глубоко он вложен в блоки (кроме случая с лямбдами):
def find(array, target)
array.each_with_index do |element,index|
return index if (element == target) # return from find
end
nil # If we didn't find the element, return nil
end