Ruby Flow Control - PullRequest
       14

Ruby Flow Control

10 голосов
/ 04 июля 2010

Я не могу найти в сети никаких полезных ресурсов, которые бы ломали различные параметры управления потоком в Ruby.

Давайте предположим, что я перебираю массив в методе:

def a_method
   things.each do |t|
      # control options?
   end
end

Какие у меня есть варианты управления потоком?Чем они отличаются?

  1. повтор
  2. возврат
  3. перерыв
  4. следующий
  5. повторить

1 Ответ

16 голосов
/ 04 июля 2010

retry можно использовать внутри спасательного блока, чтобы вернуться в начальный блок после устранения условия, вызвавшего исключение. Внутри блока он имеет эффект перехода к началу метода уступки. Таким образом, внутри каждого из них это означает, что повторная попытка перейдет к началу цикла.

return вернется из метода, в котором он находится - в данном случае из a_method.

break вернется из метода уступки - в данном случае из each (который будет отличаться от возврата из a_method, если что-то произошло между концом каждого блока и концом a_method) .

next вернется из блока и, таким образом, перейдет к следующему элементу в things.

redo перейдет к началу блока и, таким образом, повторит текущую итерацию.

...