Я не могу найти полезные ресурсы онлайн, который ломает различные опции управления потоком Ruby.
Давайте предположим, что я выполняю итерации по массиву в в методе:
def a_method
things.each do |t|
# control options?
end
end
Каковы мои различные опции управления потоком здесь? Как они отличаются?
retry
может использоваться внутри блока спасения, чтобы вернуться в блок begin после устранения условия, вызвавшего исключение. Внутри блока он имеет эффект перехода к началу выходящего метода. Так, внутри each это означает, что retry перейдет в начало цикла.
return
вернется из метода, внутри которого он находится - в данном случае из a_method
.
break
вернется из выходящего метода - в данном случае из each
(что будет отличаться от возврата из a_method
, если что-то произойдет между концом блока each и концом a_method
).
next
вернется из блока и таким образом перейдет к следующему элементу в things
.
redo
перейдет к началу блока и таким образом повторит текущую итерацию.