‚Next‘ und ‚Break‘ in Ruby

Übergeben von Argumenten an gängige Iterations-Escape-Methoden zur besseren Kontrolle in Enumerables.

Ruby bietet zwei Möglichkeiten, einer Enumerable zu entkommen: next tritt ohne weitere Auswertung in die nächste Iteration ein, und break verlässt die Enumerable vollständig.

Werfen wir einen kurzen Blick auf beide mit einigen einfachen Beispielen.

# Example of `next`a = a.each do |num|
next if num < 2
puts num
end# console output
2
3
=>

Im obigen Beispiel sehen wir, dass 1 nicht auf der Konsole gedruckt wird, da der Aufruf von next bei der ersten Iteration ausgelöst wird (1 ist kleiner als 2), wobei die Anweisung puts übersprungen wird. Die Bedingung wird in den folgenden zwei Iterationen nicht erfüllt, und die Anweisung puts gibt erwartungsgemäß num an die Konsole aus, gefolgt von einer Rückgabe von a.

# Example of `break`a = a.each do |num|
break if num < 2
puts num
end# console output
=> nil

Mit break ist etwas ganz anderes passiert. Hier wird bei der ersten Iteration 1 erneut als kleiner als 2 ausgewertet, und daher wird unser Aufruf von break ausgeführt, wobei die Aufzählung vollständig verbleibt. In diesem Fall sehen wir, dass zukünftige Iterationen nicht stattfinden und nil zurückgegeben wird.

Obwohl dieses Escape wünschenswert ist, was wäre, wenn wir etwas anderes als nil zurückgeben müssten? Glücklicherweise akzeptieren sowohl break als auch next ein Argument, um einen Rückgabewert manuell festzulegen.

Argumente übergeben

Schauen wir uns zunächst an, wie es mit break funktioniert:

a = a.each do |num|
break num if num < 2
puts num
end# console output
=> 1

Hier haben wir num als Argument an break (denken Sie daran, dass Klammern in Ruby optional sind, daher werden break num und break(num) identisch ausgewertet) und den Rückgabewert manuell angegeben. Wenn Sie jemals etwas anderes als nil wenn break ausgelöst wird, kann dies außerordentlich nützlich sein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.