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

Ruby 块

Vous savez déjà comment Ruby définit les méthodes et comment vous appelez les méthodes. De même, Ruby a une notion de bloc.

  • 块由大量的代码组成。
  • 您需要给块取个名称。
  • Le bloc est composé de nombreuses lignes de code.}}
  • Vous devez donner un nom au bloc. Le bloc est toujours appelé depuis la fonction portant le même nom. Cela signifie que si le nom de votre bloc estLe code du bloc est toujours contenu entre accolades {}. Le bloc est toujours appelé depuis la fonction portant le même nom. Cela signifie que si le nom de votre bloc est si vous avez besoin de la fonction
  • pour appeler ce bloc. test yield instruction pour appeler le bloc. Vous pouvez utiliser

syntaxe

block_name{
   statement1
   statement2
   ..........
}

ici, vous apprendrez comment utiliser un simple yield instruction pour appeler le bloc. Vous apprendrez également comment utiliser une instruction avec paramètres yield instruction pour appeler le bloc. Dans l'exemple, vous verrez ces deux types de yield instruction.

yield instruction

Voyons un exemple d'instruction yield :

在线示例

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
def test
   puts "À l'intérieur de la méthode test"
   yield
   puts "Vous êtes à nouveau à l'intérieur de la méthode test"
   yield
fin
test {puts "Vous êtes à l'intérieur du bloc"}

以上示例运行结果为:

à l'intérieur de la méthode test
Vous êtes à l'intérieur du bloc
Vous êtes à nouveau à l'intérieur de la méthode test
Vous êtes à l'intérieur du bloc

Vous pouvez également transmettre une instruction yield avec paramètres. Voici un exemple :

在线示例

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
def test
   yield 5
   puts "À l'intérieur de la méthode test"
   yield 100
fin
test {|i| puts "Vous êtes à l'intérieur du bloc #{i}"}

以上示例运行结果为:

vous êtes dans le bloc 5 à l'intérieur
à l'intérieur de la méthode test
vous êtes dans le bloc 10dans le bloc

iciyield L'instruction est suivie des paramètres. Vous pouvez même transmettre plusieurs paramètres. Dans le bloc, vous pouvez placer une variable entre deux barres obliques pour recevoir les paramètres. Par conséquent, dans le code ci-dessus, yield 5 L'instruction transmet la valeur au bloc test 5 comme paramètre.

Maintenant, regardons l'instruction suivante :

test {|i| puts "Vous êtes à l'intérieur du bloc #{i}"}

Ici, la valeur 5 reçoit la variable i. Observons maintenant l'instruction puts suivante :

puts "Vous êtes à l'intérieur du bloc #{i}"

La sortie de cette instruction puts est :

vous êtes dans le bloc5 à l'intérieur

Si vous souhaitez transmettre plusieurs paramètres, alors yield L'instruction apparaît ainsi :

yield a, b

Dans ce cas, le bloc apparaît ainsi :

test {|a, b| statement}

Les paramètres sont séparés par des virgules.

bloc et méthode

Vous avez vu comment les blocs et les méthodes sont liés. Vous utilisez généralement l'instruction yield pour appeler un bloc à partir d'une méthode portant le même nom. Par conséquent, le code suivant s'affiche ainsi :

在线示例

#!/usr/bin/ruby
def test
  yield
fin
test{ puts "Hello world"}

C'est la manière la plus simple d'implémenter un bloc. Vous utilisez yield l'instruction appelle le bloc test.

Si toutefois le dernier paramètre de la méthode est précédé de &, vous pouvez passer un bloc à cette méthode et ce bloc peut être assigné au dernier paramètre. Si * Le & apparaît également dans la liste des paramètres, & doit être placé à l'arrière.

在线示例

#!/usr/bin/ruby
def test(&block)
   block.call
fin
test { puts "Hello World!"}

以上示例运行结果为:

Hello World!

BEGIN 和 END 块

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

在线示例

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

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

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