English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Sie kennen bereits, wie Ruby Methoden definiert und wie Methoden aufgerufen werden. Ähnlich hat Ruby das Konzept von Blöcken.
block_name{ statement1 statement2 .......... }
hier, wie man einen einfachen yield Statement, um den Block aufzurufen. Sie lernen auch, wie man mit Parametern versehene yield Statement, um den Block aufzurufen. In der Beispiel sehen Sie beide Arten von yield Statement.
Lassen Sie uns ein Beispiel für ein yield-Statement sehen:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test puts "Im Methoden test" yield puts "Sie sind wieder im Methoden test innen" yield end test {puts "Sie sind im Block innen"}
以上示例的运行结果为:
im Methoden test Sie sind im Block innen Sie sind wieder im Methoden test innen Sie sind im Block innen
Sie können auch yield-Statements mit Parametern übergeben. Hier ist ein Beispiel:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test yield 5 puts "Im Methoden test" yield 100 end test {|i| puts "Sie sind im Block #{i} innen"}
以上示例的运行结果为:
Sie sind im Block 5 innen im Methoden test Sie sind im Block 10innen
hieryield Der Statement ist gefolgt von Parametern. Sie können sogar mehrere Parameter übergeben. In einem Block können Sie eine Variable zwischen zwei vertikalen Strichen platzieren, um Parameter zu empfangen. Daher ist der yield in dem obigen Code 5 Der Statement übergibt Werte an den Block. 5 als Parameter übergeben.
Jetzt, sehen Sie die folgende Anweisung:
test {|i| puts "Sie sind im Block #{i} innen"}
Hier ist der Wert 5 wird im Variable i empfangen. Jetzt, beobachten Sie die folgende puts-Anweisung:
puts "Sie sind im Block #{i} innen"
Die Ausgabe dieser puts-Anweisung ist:
Sie sind im Block5 innen
Wenn Sie mehrere Parameter übergeben möchten, dann yield Der Statement sieht so aus:
yield a, b
Der Block sieht in diesem Moment so aus:
test {|a, b| statement}
Parameter werden durch Kommas getrennt.
Sie haben bereits gesehen, wie Blöcke und Methoden miteinander verbunden sind. Sie verwenden in der Regel das yield-Statement, um Blöcke von Methodenaufrufen mit demselben Namen aufzurufen. Daher sieht der Code so aus:
#!/usr/bin/ruby def test yield end test{ puts "Hello world"}
Dies ist die einfachste Möglichkeit, einen Block zu realisieren. Sie verwenden yield der Block aufgerufen wird.
Wenn jedoch vor dem letzten Parameter einer Methode ein & steht, können Sie einem Methoden einen Block übergeben, der als letzter Parameter zugewiesen werden kann. Wenn * und & gleichzeitig in der Parameterliste auftreten, & sollte am Ende stehen.
#!/usr/bin/ruby def test(&block) block.call end test { puts "Hello World!"}
以上示例的运行结果为:
Hello World!
每个 Ruby 源文件可以声明当文件被加载时要运行的代码块(BEGIN 块),以及程序完成执行后要运行的代码块(END 块)。
#!/usr/bin/ruby 开始 { # 开始代码块 puts "开始代码块" } 代码块结束 { # 代码块结束 puts "代码块结束" } # 主代码块 puts "主代码块"
一个程序可以包含多个 BEGIN 和 END 块。BEGIN 块按照它们出现的顺序执行。END 块按照它们出现的相反顺序执行。当执行时,上面的程序输出以下结果:
开始代码块 主代码块 代码块结束