English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Você já sabe como o Ruby define métodos e como você chama métodos. Da mesma forma, o Ruby tem o conceito de bloco.
block_name{ statement1 statement2 .......... }
Aqui, você aprenderá como usar um simples yield declarações para chamar o bloco. Você também aprenderá como usar a declaração com parâmetros yield declarações para chamar o bloco. No exemplo, você verá esses dois tipos de yield declaração.
Vamos ver um exemplo de declaração yield:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test puts "Dentro do método test" yield puts "Você voltou para o método test" yield fim test {puts "Você está no bloco"}
O resultado da execução do exemplo acima é:
dentro do método test Você está no bloco você voltou para o método test Você está no bloco
Você também pode passar uma declaração yield com parâmetros. Aqui está um exemplo:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test yield 5 puts "Dentro do método test" yield 100 fim test {|i| puts "Você está no bloco #{i}"}
O resultado da execução do exemplo acima é:
você está no bloco 5 interno dentro do método test você está no bloco 100 interno
Aqui,yield a declaração é seguida pelos parâmetros. Você pode passar vários parâmetros. Dentro do bloco, você pode colocar uma variável entre chaves verticais para aceitar os parâmetros. Portanto, no código acima, o yield 5 a declaração passa valores para o bloco test 5 como parâmetro.
Agora, veja a declaração a seguir:
test {|i| puts "Você está no bloco #{i}"}
Aqui, o valor 5 será recebida na variável i. Agora, observe a declaração puts a seguir:
puts "Você está no bloco #{i}"
a saída dessa declaração puts é:
você está no bloco5 interno
Se você quiser passar vários parâmetros, então yield a declaração é assim:
yield a, b
Neste momento, o bloco é assim:
test {|a, b| statement}
os argumentos são separados por vírgulas.
Você já viu como um bloco e um método se relacionam. Normalmente, você usa a declaração yield para chamar um bloco da chamada do método com o mesmo nome. Portanto, o código é o seguinte:
#!/usr/bin/ruby def test yield fim test{ puts "Hello world"}
Este é o modo mais simples de implementar um bloco. Você usa yield a chamada de语句调用 test bloco.
mas se o último parâmetro de um método estiver precedido por &,pode passar um bloco para o método e este bloco pode ser atribuído ao último parâmetro. Se * e & aparecem ao mesmo tempo na lista de argumentos, o & deve estar no final.
#!/usr/bin/ruby def test(&block) block.call fim test { puts "Hello World!"}
O resultado da execução do exemplo acima é:
Olá Mundo!
Cada arquivo de origem Ruby pode declarar um bloco de código a ser executado quando o arquivo é carregado (bloco INÍCIO) e um bloco de código a ser executado quando o programa é concluído (bloco FIM).
#!/usr/bin/ruby INÍCIO { # INÍCIO do Bloco de Código puts "INÍCIO do Bloco de Código" } FIM { # FIM do Bloco de Código puts "FIM do Bloco de Código" } # BLOCO PRINCIPAL puts "BLOCO PRINCIPAL"
Um programa pode conter múltiplos INÍCIO e FIM de bloco. O bloco INÍCIO é executado na ordem em que aparece. O bloco FIM é executado na ordem inversa. Quando executado, o programa acima gera o seguinte resultado:
INÍCIO do Bloco de Código BLOCO PRINCIPAL FIM do Bloco de Código