Wenn ich so etwas machen wollte:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
Wie würde ich diesen Effekt erzielen? Ich weiß, ich könnte einfach alles in den Block in eine große if-Anweisung einschließen, aber ich möchte die Verschachtelung nach Möglichkeit vermeiden.
Break würde hier nicht funktionieren, da ich die Iteration der verbleibenden Elemente nicht stoppen möchte.
next value
undbreak value
. Genau das, wonach ich gesucht habe.break value
hat bei mir nicht funktioniert, hat aber gutnext value
funktioniert. Vielen Dank.next
undbreak
sind in keiner Weise spezifisch für Schleifenkonstrukte, daher ist der Artikel, den Sie verlinkt haben, sehr irreführend (da er stark das Gegenteil impliziert). Und meine Beschreibungen sind definitiv korrekt, wennnext
undbreak
innerhalb von Blöcken verwendet werden (beachten Sie, dasswhile
undfor
werden selten, wenn überhaupt, in Ruby verwendet, so dass 99% der Verwendungen vonnext
undbreak
innerhalb von Blöcken liegen).quelle
In diesem Fall können Sie break verwenden, um die Schleife vorzeitig zu beenden:
... dies setzt natürlich voraus, dass Sie nicht wirklich einen Wert zurückgeben möchten, sondern nur aus dem Block ausbrechen.
quelle
break
in Ruby verwenden -break 5
führt dazueach
, dass 5 zurückgegeben wird.