Перерыв и возврат в рубине, как вы их используете?
Я просто спросил question о возврате и, похоже, делает то же самое, что и break. Как вы используете возврат, и как вы используете разрыв, например, в фактическом коде, который вы пишете, чтобы решить проблемы, которые могут использовать эти конструкции.
Я не могу опубликовать примеры, потому что я не знаю, как их использовать, поэтому они не будут иметь большого смысла.
Ответы
Ответ 1
Возврат завершается из всей функции.
Перерыв выходит из самого внутреннего цикла.
Таким образом, в такой функции:
def testing(target, method)
(0..100).each do |x|
(0..100).each do |y|
puts x*y
if x*y == target
break if method == "break"
return if method == "return"
end
end
end
end
Чтобы увидеть разницу, попробуйте:
testing(50, "break")
testing(50, "return")
Ответ 2
break вызывается изнутри цикла. Он поместит вас сразу после самого внутреннего цикла, в котором вы находитесь.
return вызывается из методов. Он вернет значение, которое вы ему скажете, и поместите его сразу после того, как он был вызван.
Ответ 3
Я хотел бы отредактировать одобренный ответ, чтобы упростить пример, но мое редактирование было отклонено с предложением дать новый ответ. Итак, это моя упрощенная версия:
def testing(target, method)
(1..3).each do |x|
(1..3).each do |y|
print x*y
if x*y == target
break if method == "break"
return if method == "return"
end
end
end
end
мы видим разницу, пытающуюся:
testing(3, "break")
testing(3, "return")
Результаты первого (break
оператора, выходящего из самого внутреннего цикла только при достижении 3
):
1232463
Результаты последнего (return
оператора, выходящего за целую функцию):
123
Ответ 4
Еще один пример может быть, если у вас есть два цикла в одном методе, и если вы хотите выйти из первого цикла и продолжить использовать второй цикл, используйте первый цикл или наоборот:
def testing(method)
x=1
10.times do
if(x == 2)
break if method == "break"
end
x+=1
end
10.times do
if(x == 5)
return if method == "return"
end
x+=1
end
end