Ruby Block
Du weißt bereits, wie Ruby Methoden definiert und wie du Methoden aufrufst. Ähnlich verfügt Ruby über das Konzept von Blöcken.
- Ein Block besteht aus Codestücken.
- Du musst einem Block einen Namen geben.
- Der Code im Block ist immer von geschweiften Klammern {} umschlossen.
- Blöcke werden immer von Funktionen mit demselben Namen aufgerufen. Das bedeutet, wenn dein Blocknametestlautet, dann würdest du die Funktiontestverwenden, um diesen Block aufzurufen.
- Du kannst dieyieldAnweisung verwenden, um einen Block aufzurufen.
Syntax
Hier lernst du, wie du eine einfacheyieldAnweisung verwendest, um einen Block aufzurufen. Du lernst auch, wie du eineyieldAnweisung mit Parametern verwendest, um einen Block aufzurufen. In den Beispielen siehst du diese beiden Arten vonyieldAnweisungen verwendet werden kann.
yieldAnweisungen
Schauen wir uns ein Beispiel für eine yield-Anweisung an:
Beispiel
Ausprobieren »
Die Ausgabe des obigen Beispiels ist:
在 test 方法内 你在块内 你又回到了 test 方法内 你在块内
Du kannst auch eine yield-Anweisung mit Parametern übergeben. Hier ist ein Beispiel:
Beispiel
Ausprobieren »
Die Ausgabe des obigen Beispiels ist:
你在块 5 内 在 test 方法内 你在块 100 内
Hier,yieldwird die Anweisung von Parametern gefolgt. Du kannst sogar mehrere Parameter übergeben. Im Block kannst du eine Variable zwischen zwei senkrechten Strichen platzieren, um Parameter zu empfangen. Daher übergibt im obigen Code die Anweisung yield 5 den Wert 5 als Parameter an den Testblock.
Betrachte nun die folgende Anweisung:
Hier wird der Wert 5 in der Variablen i empfangen. Betrachte nun die folgende puts-Anweisung:
Die Ausgabe dieser puts-Anweisung ist:
Wenn du mehrere Parameter übergeben möchtest, dann sieht dieyield-Anweisung wie folgt aus:
An diesem Punkt sieht der Block wie folgt aus:
Die Parameter werden durch Kommas getrennt.
Blöcke und Methoden
Du hast gesehen, wie Blöcke und Methoden miteinander zusammenhängen. Du verwendest normalerweise die yield-Anweisung, um einen Block aus einer Methode mit demselben Namen aufzurufen. Der Code sieht daher wie folgt aus:
Beispiel
Dieses Beispiel ist die einfachste Möglichkeit, einen Block zu implementieren. Du verwendest dieyield-Anweisung, um den test-Block aufzurufen.
Wenn jedoch dem letzten Parameter einer Methode ein & vorangestellt ist, kannst du einen Block an diese Methode übergeben, und dieser Block kann dem letzten Parameter zugewiesen werden. Wenn * und & zusammen in der Parameterliste vorkommen, sollte & dahinter platziert werden.
Die Ausgabe des obigen Beispiels ist:
Hello World!
BEGIN- und END-Blöcke
Jede Ruby-Quelldatei kann einen Codeblock deklarieren, der ausgeführt wird, wenn die Datei geladen wird (einen BEGIN-Block), und einen Codeblock, der ausgeführt wird, nachdem das Programm die Ausführung beendet hat (einen END-Block).
Beispiel
Ein Programm kann mehrere BEGIN- und END-Blöcke enthalten. BEGIN-Blöcke werden in der Reihenfolge ausgeführt, in der sie erscheinen. END-Blöcke werden in umgekehrter Reihenfolge ausgeführt, in der sie erscheinen. Bei der Ausführung gibt das obige Programm das folgende Ergebnis aus:
BEGIN 代码块 MAIN 代码块 END 代码块Andere Erweiterungen