Wie bricht man den äußeren Zyklus in Ruby?
In Perl, es ist eine Fähigkeit zu brechen, der äußere Zyklus wie diese:
AAA: for my $stuff (@otherstuff) {
for my $foo (@bar) {
last AAA if (somethingbad());
}
}
(syntax falsch sein kann), die mit einer Schleife label zu brechen, die äußere Schleife von innerhalb der inneren Schleife. Gibt es etwas ähnliches in Ruby?
InformationsquelleAutor der Frage Fluffy | 2009-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie wollen, ist nicht-lokale Steuerung-flow, die Ruby hat mehrere Möglichkeiten:
throw
/catch
Fortsetzungen
Vorteile:
GOTO
.Nachteile:
Ausnahmen
Vorteile:
Nachteile:
throw
/catch
Diesem ist (ungefähr), was es Aussehen würde:
Vorteile:
StopIteration
Ausnahme für die Kündigung.Nachteile:
InformationsquelleAutor der Antwort Jörg W Mittag
Betrachten
werfen
/catch
. Normalerweise außerhalb der Schleife in den folgenden code ausgeführt wird fünf mal, aber mit werfen, Sie können es ändern, um was auch immer Sie mögen, brechen Sie in den Prozess. Betrachten Sie dieses perfekt gültigen ruby-code:InformationsquelleAutor der Antwort Chris Bunch
Nein, gibt es nicht.
Ihre Optionen sind:
InformationsquelleAutor der Antwort sepp2k
oder "brechen, wenn do_break" je nachdem, was Sie wollen
InformationsquelleAutor der Antwort Anno2001
Vielleicht ist dies, was Sie wollen? (nicht getestet)
Die find-Methode hält Schleife, bis der block gibt einen nicht-null-Wert oder das Ende der Liste erreicht wird.
InformationsquelleAutor der Antwort Jeff Waltzer
Ich weiß, ich werde bedauern dies in den morgen doch einfach mit einer while Schleife könnte den trick tun.
Den
if y==5 && x==3
ist nur ein Beispiel für einen Ausdruck drehen wahr.InformationsquelleAutor der Antwort Jonas Elfström
Verpackung eine interne Methode, um das Schleifen könnte den trick tun
Beispiel:
Hier können Sie prüfen, innerhalb der for-Schleifen und Rückkehr aus der internen Methode sobald eine Bedingung erfüllt ist.
InformationsquelleAutor der Antwort Metareven
Können Sie prüfen, indem ein flag, das gesetzt wird, innerhalb der inneren Schleife, die für die Steuerung der äußeren Schleife.
'weiter' der äußeren Schleife
'break' der äußeren Schleife
InformationsquelleAutor der Antwort Stephen LAI