English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Bloco Ruby

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.

  • 块由大量的代码组成。
  • o bloco é composto por muitos códigos.
  • você precisa dar um nome ao bloco.
  • o código dentro do bloco sempre é contido dentro de chaves {}. se você usar uma funçãoo bloco sempre é chamado a partir de uma função com o mesmo nome. Isso significa que se o nome do seu bloco for se você usar uma função test
  • para chamar esse bloco. yield declarações para chamar o bloco. Você pode usar

syntaxe

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.

yield declaração

Vamos ver um exemplo de declaração yield:

Exemplos Online

#!/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:

Exemplos Online

#!/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.

bloco e método

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:

Exemplos Online

#!/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.

Exemplos Online

#!/usr/bin/ruby
def test(&block)
   block.call
fim
test { puts "Hello World!"}

O resultado da execução do exemplo acima é:

Olá Mundo!

Bloco INÍCIO e FIM

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).

Exemplos Online

#!/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