Latest web development tutorials

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 代码块