Ruby ist eine unglaubliche Programmiersprache, die mit modernen Funktionen und Tools für die meisten Entwicklungsumgebungen gepackt ist. Ruby hat eine leistungsstarke, oft übersehene Funktion: Blöcke.
Die Essenz dieses Artikels ist es, zu diskutieren und zu verstehen, welche Ruby -Blöcke sind, wie sie funktionieren und wie wir sie in unseren Ruby -Programmen verwenden können.
Wir beginnen mit der grundlegenden Syntax und diskutieren dann Funktionen wie Ertrag, die für neue Ruby -Benutzer einschüchternd sein können.
Was sind Rubinblöcke?
Wie in anderen Programmiersprachen ist ein Block oder eine Schließung eine anonyme Funktion, die Sie in einem DO einschließen und Schlüsselwörter für Inline -Blöcke beenden.
Mit Blocks können Sie einen Codeblock in separate Komponenten gruppieren, die Sie während des Methodenaufrufs als Parameter übergeben können.
Es gibt zwei Möglichkeiten, einen Block in Ruby zu definieren: Das erste verwendet das DO… End -Schlüsselwort, das andere verwendet ein Paar lockiger Klammern.
Do… Endblock wird hauptsächlich verwendet, um einen Codeblock zu definieren, der mehrere Zeilen umfasst, während lockige Klammern verwendet werden.
Sie übergeben die Argumente eines Blocks zwischen einem Paar Rohrzeichen | |
HINWEIS: Unabhängig davon. Verwenden Sie jedoch für Lesbarkeitszwecke Curly-Zahnspangen für einen einzelnen Linienblock und das Do-End für Multi-Line-Blöcke.
Grundlegendes Beispiel
Das Folgende sind zwei einfache Beispiele für einen Rubinblock, einen mit lockigen Zahnspangen, während das andere verwendet wird… Ende.
# einzelne Zeile -Beide Beispiele oben liefern ähnliche Ergebnisse:
Das obige Beispiel wendet Rubinblöcke in der einfachsten Form an: Wir übergeben den Block in jeder Methode des Array -Objekts. Übergeben Sie die Argumente des Blocks in einem Paar Rohrzeichen; Im obigen Beispiel lautet das Argument i. Schließlich geben wir die Blockfunktionen im Körper des Blocks aus (in diesem Beispiel, sagt).
Ruby Relief -Keyword verstehen
Sie können Rubinblöcke innerhalb einer Standardmethode verwenden. Die Funktionalität, diese Maßnahmen auszuführen.
Lassen Sie uns das Keyword der Rendite im Detail diskutieren.
Was ist Ausbeute in Ruby?
Mit der Keyword -Ausbeute in Ruby können Sie einen definierten Block innerhalb einer Ruby -Methode aufrufen.
Wie es funktioniert
Betrachten wir ein Beispiel, das uns hilft, zu verstehen, wie das Keyword der Ertragsdauer funktioniert. Betrachten Sie die unten gezeigte einfache Ruby -Methode:
def auf halloDas obige Beispiel ist eine einfache Ruby -Methode, die „Hallo druckt!”.
Wenn wir dem Programm mehr Flexibilität hinzufügen möchten, können wir dem Benutzer ermöglichen, während des Methodenaufrufs ein Argument zu übergeben.
Daher können wir die Methode als:
Def Hallo (Name)Im zweiten Beispiel haben wir ein wenig Flexibilität, da wir einen beliebigen Namen als Argument an die Methode übergeben können.
Wir können dies mit einem Rubinblock noch weiter ausdehnen. Wenn wir den Block innerhalb der Methode übergeben, wird er ausgeführt und gibt die Ergebnisse zurück.
Ertragsmethode Definition
Um eine Methode zu erstellen, die einen Block akzeptiert, verwenden wir die Keyword -Ausbeute. Die allgemeine Syntax ist wie gezeigt:
def auf halloBei der Definition können wir die Methode aufrufen und einen Codeblock übergeben. Die Methode führt den Code aus und gibt das Ergebnis zurück.
Übergeben eines Rubinblocks an eine Methode
Mit der Blocksyntax können wir einen Block an die Methode übergeben. Zum Beispiel können wir die obige Methode mit einer Syntax als:
Hallo Puts "Hallo Welt"Solange die Methode das Keyword zum Ausbeute enthält, können Sie jeden Codeblock übergeben und ausführen.
NOTIZ: Sobald Sie ein Keyword in einer Methode definiert haben, müssen Sie beim Aufrufen der Methode einen Block übergeben. Andernfalls erhalten Sie einen Fehler "No Block angegeben (Ertrag)".
Beispiel 2
Nehmen wir ein weiteres Beispiel:
def auf halloDas obige Beispiel zeigt, wie die Ausführung einer Methode mit Ertrag funktioniert. Die Programmausgabe ist unten:
vor AusbotRuby Block Argumente
Mit Ruby können Sie Argumente an den Rubinblock weitergeben. Blockargumente sind im Ertragsblock definiert und dienen als Blockparameter.
Die Reihenfolge, in der Sie das Argument bestehen, ist kritisch, da der Block sie in der festgelegten Reihenfolge akzeptiert.
def auf halloDie im Block definierten Parameter haben einen lokalen Bereich und sind nur im Kontext des Blocks verfügbar.
Daher erhalten Sie außerhalb des Blockbereichs eine undefinierte Variable.
Beispiel 3
Die Funktionalität des Blocks ändert sich nicht in Einzel- oder Multi-Line-Blöcken. Wir können dies anhand des folgenden Beispiels veranschaulichen:
Def AreaDie Ausgabe aus dem obigen Beispiel lautet:
Der Bereich des Cirle ist 21.99113cm2Dies zeigt, dass die Funktionalität entweder Multi-Line- oder Einzellinienblöcke gleich bleibt.
Explizite Blöcke
In den vorherigen Beispielen haben wir die Blöcke als implizit definiert. Wir können sie jedoch auch als explizit beschreiben.
Explizite Blöcke bedeuten, dass wir der Parameterliste der Methode einen Namen zuweisen.
Def Beispiel (& Block)Sie übergeben den Namen des Blocks nach dem Ampersanden im Inneren. Mit dem Namen des Blocks können Sie den gespeicherten Block an eine andere Methode übergeben.
Blockfehlerbehandlung
In den vorherigen Abschnitten haben wir erwähnt, dass der Ertragsblock obligatorisch ist. Sie können jedoch eine einfache Fehlerbehandlungslogik implementieren, wenn die Ausbeute bereitgestellt wird. Wir tun dies mit dem Block_given? Kernelmethode.
Die Methode gibt einen booleschen Wert von true zurück, wenn die Ausbeute verfügbar ist und wenn es anders ist, falsch.
Betrachten Sie das einfache Beispiel unten:
def auf halloWenn wir die Methode mit dem erforderlichen Rendite -Wert aufrufen, ist die Ausgabe:
Hallo Puts "Hallo da!"Auf der anderen Seite führt das Aufrufen der Methode ohne Ertrag den sonstigen Block als:
HalloVerwenden des Wertes aus dem Block_given? Methode können Sie die Fehlerbehandlungslogik implementieren, wenn kein Ertragswert vorhanden ist.
Abschluss
In diesem Leitfaden haben wir über Ruby -Blöcke gesprochen, was sie sind, wie sie funktionieren und wie sie in Ihren Projekten verwendet werden können.
Danke fürs Lesen!