2010-07-04 4 views
10

Ich kann online keine nützlichen Ressourcen finden, die Rubys verschiedene Flusssteuerungsoptionen aufschlüsseln.Ruby-Flusskontrolle

Nehmen wir an, dass ich über ein Array bin Iterieren innerhalb in einem Verfahren:

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

Was hier meine verschiedenen Flusssteuerungsoptionen sind? Wie unterscheiden sie sich?

  1. Wiederholungs
  2. Rückkehr
  3. Pause
  4. nächsten
  5. Redo

Antwort

16

retry kann in einem Rettungsblock verwendet werden, um zu springen zurück in den Block beginnen, nachdem die Bedingung, die verursacht Die Ausnahme wurde behoben. Innerhalb eines Blocks springt es an den Anfang der Ertragsmethode. In jedem bedeutet dies, dass der Wiederholungsversuch zum Anfang der Schleife springt.

return wird von der Methode zurückkommen, in der es sich befindet - in diesem Fall von a_method.

break wird aus dem Nachgeben Verfahren zurück - in diesem Fall von each (die von der Rückkehr aus a_method anders wäre, wenn etwas zwischen dem Ende des jeweiligen Blockes und dem Ende der a_method passiert).

next werden vom Block zurück und damit zum nächsten Element in things springen.

redo springt an den Anfang des Blocks und wiederholt so die aktuelle Iteration.