Ruby Bloquer
Vous savez déjà comment définir une méthode Ruby et comment vous appelez la méthode. De même, Ruby a le concept d'un bloc.
- Block est composé d'une grande quantité de code.
- Vous devez prendre un nom de bloc.
- Code Block est toujours entouré d'accolades {} à l'intérieur.
- D'où il a toujours bloquer l'appel de la fonction du même nom. Cela signifie que si votre nom de bloc pour letest,alors vous voulez utiliser pour appeler ce blocde testde fonctionnement.
- Vous pouvez utiliser l'instructionde rendementpour appeler le bloc.
grammaire
block_name{ statement1 statement2 .......... }
Ici , vous apprendrez comment utiliser une déclarationde rendementsimple pour appeler le bloc. Vous apprendrez également comment utiliser la déclarationde rendementavec des paramètres au bloc appelé. Dans l'exemple, vous verrez deux types de déclarationde rendement.
déclarationde rendement
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 "你在块内"}
Des exemples des résultats d'exploitation ci-dessus comme suit:
在 test 方法内 你在块内 你又回到了 test 方法内 你在块内
Vous pouvez également transmettre la déclaration 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} 内"}
Des exemples des résultats d'exploitation ci-dessus comme suit:
你在块 5 内 在 test 方法内 你在块 100 内
Ici, après la déclarationde rendementsuivi des paramètres. Vous pouvez même passer plusieurs paramètres. Dans le bloc, vous pouvez placer une variable entre deux barres verticales pour accepter les paramètres. Ainsi, dans le code ci-dessus, le rendement 5 déclaration est passé en paramètre à la valeur de 5 éprouvettes.
Maintenant, regardez la déclaration suivante:
test {|i| puts "你在块 #{i} 内"}
Ici, la valeur de 5 recevra la variable i. Maintenant, nous avons mis observer la déclaration suivante:
puts "你在块 #{i} 内"
Cela met la déclaration de sortie est:
你在块 5 内
Si vous voulez passer plusieurs paramètres, puis la déclarationde rendementest le suivant:
yield a, b
A ce moment, comme indiqué dans le bloc:
test {|a, b| statement}
Paramètres séparés par des virgules.
Les blocs et les méthodes
Vous avez vu entre le bloc et la méthode de la façon dont interreliés. Vous utilisez généralement l'instruction yield appelle le bloc de la méthode ayant le même nom. Par conséquent, le code est le suivant:
#!/usr/bin/ruby def test yield end test{ puts "Hello world"}
Cet exemple est le moyen le plus simple pour atteindre le bloc. Vous utilisez l'instructionyieldappelle le bloc d'essai.
Mais si le dernier paramètre avant la méthode avec et vous pouvez alors la méthode est passé un bloc, ce bloc peut être attribué au dernier paramètre. Si le * et & apparaissent également dans la liste des paramètres, et doit être placé sur le dos.
#!/usr/bin/ruby def test(&block) block.call end test { puts "Hello World!"}
Des exemples des résultats d'exploitation ci-dessus comme suit:
Hello World!
BEGIN et blocs END
Chaque fichier source Ruby peut déclarer lorsque des blocs de code (bloc BEGIN) lorsque le fichier est chargé d'exécuter, et après la fin du programme d'exécution des blocs de code à exécuter (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. BEGIN bloc est exécuté dans l'ordre dans lequel ils apparaissent. blocs END tels qu'ils apparaissent dans l'ordre inverse. Lorsqu'il est exécuté, le programme ci-dessus donne les résultats suivants:
BEGIN 代码块 MAIN 代码块 END 代码块