Blocs de rubis
Vous savez déjà comment Ruby définit les méthodes et comment vous les appelez. De même, Ruby a un concept de blocs. Le bloc
est constitué d'une grande quantité de code.
Vous devez donner un nom au bloc. Le code dans un bloc
est toujours entouré d'accolades {}. Le bloc
est toujours appelé depuis une fonction portant le même nom que lui. Cela signifie que si le nom de votre bloc est test, alors vous souhaitez utiliser la fonction test pour appeler ce bloc.
Vous pouvez utiliser l'instruction yield pour appeler un bloc.
Syntaxe
block_name{ statement1 statement2 .......... }
Ici, vous apprendrez comment appeler un bloc en utilisant une simple instruction yield. Vous apprendrez également à appeler des blocs en utilisant l'instruction yield avec des paramètres. Dans l'exemple, vous verrez les deux types de déclarations yield.
yield Déclaration
Regardons un exemple de déclaration de rendement :
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test puts "在 test 方法内" yield puts "你又回到了 test 方法内" yield end test {puts "你在块内"}
Le résultat de la L'exemple ci-dessus est :
在 test 方法内 你在块内 你又回到了 test 方法内 你在块内
Vous pouvez également transmettre une instruction de rendement avec des paramètres. Voici un exemple :
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test yield 5 puts "在 test 方法内" yield 100 end test {|i| puts "你在块 #{i} 内"}
Le résultat de l'exemple ci-dessus est :
你在块 5 内 在 test 方法内 你在块 100 内
Ici, l'instruction yield est suivie par paramètres. Vous pouvez même transmettre plusieurs paramètres. Dans un bloc, vous placez une variable entre deux barres verticales pour accepter des paramètres. Ainsi, dans le code ci-dessus, l'instruction rendement 5 transmet la valeur 5 comme paramètre au bloc de test.
Maintenant, regardez l'instruction suivante :
test {|i| puts "你在块 #{i} 内"}
Ici, la valeur 5 sera reçue dans la variable i. Maintenant, observez l'instruction put suivante :
puts "你在块 #{i} 内"
Le résultat de cette instruction puts est :
你在块 5 内
Si vous souhaitez transmettre plusieurs paramètres, alors l'instruction yield ressemble à this :
yield a, b
À ce stade, le bloc ressemble à ceci :
test {|a, b| statement}
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 une instruction rendement pour appeler un bloc à partir d’une méthode qui porte le même nom. Par conséquent, le code ressemble à ceci :
#!/usr/bin/ruby def test yield end test{ puts "Hello world"}
Cet exemple est le moyen le plus simple d'implémenter des blocs. Vous appelez le bloc de test en utilisant l'instruction yield.
Mais si le dernier paramètre d'une méthode est précédé de &, alors vous pouvez passer un bloc à la méthode et le bloc peut être affecté au dernier paramètre. Si * et & apparaissent en même temps dans la liste des paramètres, & doit être placé après.
#!/usr/bin/ruby def test(&block) block.call end test { puts "Hello World!"}
Le résultat de l'exemple ci-dessus est :
Hello World!
Blocs BEGIN et END
Chaque fichier source Ruby peut être déclaré lorsque le le fichier est chargé Un bloc de code à exécuter lorsque le programme termine son exécution (bloc BEGIN) et un bloc de code à exécuter une fois l'exécution du programme terminée (bloc END).
#!/usr/bin/ruby BEGIN { # BEGIN 代码块 puts "BEGIN 代码块" } END { # END 代码块 puts "END 代码块" } # MAIN 代码块 puts "MAIN 代码块"
Un programme peut contenir plusieurs blocs BEGIN et END. Les blocs BEGIN sont exécutés dans l'ordre dans lequel ils apparaissent. Les blocs END sont exécutés dans l'ordre inverse dans lequel ils apparaissent. Une fois exécuté, le programme ci-dessus produit le résultat suivant :
BEGIN 代码块 MAIN 代码块 END 代码块