Ruby bloc

Vous savez déjà comment Ruby définit les méthodes et comment vous appelez les méthodes. De même, Ruby a le concept de blocs.

  • Un bloc est constitué de morceaux de code.
  • Vous devez donner un nom à un bloc.
  • Le code dans le bloc est toujours entouré d'accolades {}.
  • Les blocs sont toujours appelés depuis des fonctions portant le même nom. Cela signifie que si le nom de votre bloc esttest, alors vous utiliseriez la fonctiontestpour appeler ce bloc.
  • Vous pouvez utiliser l'instructionyieldpour invoquer un bloc.

Syntaxe

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

Ici, vous apprendrez à utiliser une simple instructionyieldpour invoquer un bloc. Vous apprendrez également à utiliser une instructionyieldavec des paramètres pour invoquer un bloc. Dans les exemples, vous verrez ces deux types deyieldinstructions.

Instructionsyield

Examinons un exemple d'instruction yield :

Exemple

#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test puts "Inside the test method" yield puts "Vous êtes de retour dans la méthode test" yield end test {puts "Vous êtes à l'intérieur du bloc"}

Essayez-le »

La sortie de l'exemple ci-dessus est :

在 test 方法内
你在块内
你又回到了 test 方法内
你在块内

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

Exemple

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

Essayez-le »

La sortie de l'exemple ci-dessus est :

你在块 5 内
在 test 方法内
你在块 100 内

Ici,yieldl'instruction est suivie de paramètres. Vous pouvez même passer plusieurs paramètres. Dans le bloc, vous pouvez placer une variable entre deux barres verticales pour accepter des paramètres. Par conséquent, dans le code ci-dessus, l'instruction yield 5 transmet la valeur 5 au bloc test en tant que paramètre.

Maintenant, regardez l'instruction suivante :

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

Ici, la valeur 5 est reçue dans la variable i. Maintenant, observez 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 voulez passer plusieurs paramètres, alors l'instructionyieldse présente comme suit :

yield a, b

À ce stade, le bloc se présente comme suit :

test {|a, b| instruction}

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

Blocs et méthodes

Vous avez vu comment les blocs et les méthodes sont liés les uns aux autres. Vous utilisez généralement l'instruction yield pour invoquer un bloc depuis une méthode du même nom. Par conséquent, le code est le suivant :

Exemple

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

Cet exemple est la façon la plus simple d'implémenter un bloc. Vous utilisez l'instructionyieldpour invoquer le bloc test.

Cependant, si le dernier paramètre d'une méthode est précédé de &, vous pouvez passer un bloc à cette méthode, et ce bloc peut être affecté au dernier paramètre. Si * et & apparaissent ensemble dans la liste des paramètres, & doit être placé après.

Exemple

#!/usr/bin/ruby def test(&block) block.call end test { puts "Bonjour le monde !"}

Essayez-le »

La sortie de l'exemple ci-dessus est :

Hello World!

Blocs BEGIN et END

Chaque fichier source Ruby peut déclarer un bloc de code à exécuter lors du chargement du fichier (un bloc BEGIN), et un bloc de code à exécuter après la fin de l'exécution du programme (un bloc END).

Exemple

#!/usr/bin/ruby BEGIN { #bloc de code BEGIN puts "bloc de code BEGIN" } END { #bloc de code END puts "bloc de code END" } #bloc de code MAIN puts "bloc de code MAIN"

Un programme peut contenir plusieurs blocs BEGIN et END. Les blocs BEGIN sont exécutés dans l'ordre où ils apparaissent. Les blocs END sont exécutés dans l'ordre inverse de leur apparition. Lorsqu'il est exécuté, le programme ci-dessus produit le résultat suivant :

BEGIN 代码块
MAIN 代码块
END 代码块
Autres extensions