English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 块

Sie kennen bereits, wie Ruby Methoden definiert und wie Methoden aufgerufen werden. Ähnlich hat Ruby das Konzept von Blöcken.

  • Der Block besteht aus einer großen Menge an Code.
  • Der Block besteht aus einer großen Menge an Code.
  • Sie müssen dem Block einen Namen geben.
  • Der Code im Block wird immer in Klammern {} enthalten. wenn Sie eine FunktionDer Block ruft immer den mit demselben Namen versehenen Funktion auf. Dies bedeutet, dass wenn Ihr Blockname wenn Sie eine Funktion test
  • verwenden, um diesen Block aufzurufen. yield Statement, um den Block aufzurufen. Sie können

Syntax

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.

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.

Block und Methode

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!

BEGIN 和 END 块

每个 Ruby 源文件可以声明当文件被加载时要运行的代码块(BEGIN 块),以及程序完成执行后要运行的代码块(END 块)。

在线示例

#!/usr/bin/ruby
开始 { 
  # 开始代码块
  puts "开始代码块"
} 
代码块结束 { 
  # 代码块结束
  puts "代码块结束"
}
  # 主代码块
puts "主代码块"

一个程序可以包含多个 BEGIN 和 END 块。BEGIN 块按照它们出现的顺序执行。END 块按照它们出现的相反顺序执行。当执行时,上面的程序输出以下结果:

开始代码块
主代码块
代码块结束