Was bedeutet dies in Ruby??

Was bedeutet dies in Ruby??

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 -
['Java', 'C', 'C ++'].jeweils | i | setzt ich
# Multi -Line -> Do… Ende
['Java', 'C', 'C ++'].jeweils tun | i |
stellt i
Ende

Beide Beispiele oben liefern ähnliche Ergebnisse:

  • Java
  • C
  • C++

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 hallo
Setzt "Hallo!"
Ende

Das 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)
setzt "Hallo", + Name
Ende
Hallo ("USA")

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 hallo
Ertrag
Ende

Bei 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 hallo
stellt "vor Ausleihen."
Ertrag
stellt "nach Rendite."
Ende
Hallo Puts "I Relief"

Das obige Beispiel zeigt, wie die Ausführung einer Methode mit Ertrag funktioniert. Die Programmausgabe ist unten:

vor Ausbot
Ich ergeben
nach Ertrag

Ruby 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 hallo
Rendite ("John Doe", 20)
Ende
Hallo | Name, Alter | setzt "Hallo #Name, du bist #Alter Jahre alt"

Die 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 Area
Ausbeute (7)
Ende
Bereich tun
stellt "den Bereich des Cirle" #7 * 3.14159 CM2 "
Ende

Die Ausgabe aus dem obigen Beispiel lautet:

Der Bereich des Cirle ist 21.99113cm2

Dies 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)
Block.Forderung
Ende
Beispiel platziert "explizites Blockbeispiel"

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 hallo
Wenn block_given?
Ertrag
anders
setzt "Nichts ist passiert ... [Fehler]"
Ende
Ende

Wenn wir die Methode mit dem erforderlichen Rendite -Wert aufrufen, ist die Ausgabe:

Hallo Puts "Hallo da!"
Hallo!

Auf der anderen Seite führt das Aufrufen der Methode ohne Ertrag den sonstigen Block als:

Hallo
Nichts ist passiert ... [Fehler]

Verwenden 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!