Latest web development tutorials

rubi Bloco

Você já sabe como definir um método Ruby e como você chamar o método. Da mesma forma, Ruby tem o conceito de um bloco.

  • Bloco é composto de uma série de código.
  • Você precisa ter um nome de bloco.
  • código de bloco está sempre entre chaves {} dentro.
  • A partir do qual ele sempre bloquear a chamada de função com o mesmo nome. Isto significa que, se o nome do bloco para oteste,então você deseja usar para chamar esse bloco deteste defunção.
  • Você pode usar a declaração derendimentopara chamar o bloco.

gramática

block_name{
   statement1
   statement2
   ..........
}

Aqui você vai aprender como usar uma declaração derendimentosimples para chamar o bloco. Você também vai aprender como usar a declaração derendimentocom parâmetros para o bloco chamado. No exemplo, você vai ver dois tipos de declaração derendimento.

declaração derendimento

Vejamos um exemplo de instrução rendimento:

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

def test
   puts "在 test 方法内"
   yield
   puts "你又回到了 test 方法内"
   yield
end
test {puts "你在块内"}

Exemplos dos resultados operacionais acima da seguinte forma:

在 test 方法内
你在块内
你又回到了 test 方法内
你在块内

Você também pode passar declaração de rendimento com os parâmetros. Aqui está um exemplo:

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

def test
   yield 5
   puts "在 test 方法内"
   yield 100
end
test {|i| puts "你在块 #{i} 内"}

Exemplos dos resultados operacionais acima da seguinte forma:

你在块 5 内
在 test 方法内
你在块 100 内

Aqui, após a declaração derendimentoseguido parâmetros. Você pode até passar vários parâmetros. No bloco, você pode colocar uma variável entre duas barras verticais para aceitar os parâmetros. Assim, no código acima, rendimento de 5 declaração é passada como um parâmetro para o valor de 5 peças de teste.

Agora, olhe para a seguinte declaração:

test {|i| puts "你在块 #{i} 内"}

Aqui, o valor de 5 receberá o i variável. Agora, vamos colocar observar a seguinte declaração:

puts "你在块 #{i} 内"

Isso coloca a declaração de saída é:

你在块 5 内

Se você quiser passar vários parâmetros, então a declaração derendimentoé a seguinte:

yield a, b

Neste momento, tal como mostrado no bloco:

test {|a, b| statement}

Parâmetros separados por vírgulas.

Blocos e métodos

Você tem visto entre o bloco eo método de como inter-relacionados. Você geralmente usa a declaração de rendimento chama o bloco a partir do método com o mesmo nome. Por isso, o código é o seguinte:

#!/usr/bin/ruby

def test
  yield
end
test{ puts "Hello world"}

Este exemplo é a maneira mais simples para alcançar o bloco. Você usa a declaração derendimentochama o bloco de teste.

Mas se o último parâmetro antes que o método com & podes o método é passado um bloco, e que este bloco pode ser atribuído ao último parâmetro. Se o * e & também aparecem na lista de parâmetros, e deve ser colocado na parte de trás.

#!/usr/bin/ruby

def test(&block)
   block.call
end
test { puts "Hello World!"}

Exemplos dos resultados operacionais acima da seguinte forma:

Hello World!

BEGIN e END

Cada arquivo de origem Ruby pode declarar quando os blocos de código (bloco BEGIN) quando o arquivo é carregado para ser executado, e após o programa termina a execução dos blocos de código para ser executado (bloco END).

#!/usr/bin/ruby

BEGIN { 
  # BEGIN 代码块
  puts "BEGIN 代码块"
} 

END { 
  # END 代码块
  puts "END 代码块"
}
  # MAIN 代码块
puts "MAIN 代码块"

Um programa pode conter vários blocos começar e terminar. bloco BEGIN é executado na ordem em que aparecem. blocos terminais como eles aparecem em ordem inversa. Quando executado, o programa acima produz os seguintes resultados:

BEGIN 代码块
MAIN 代码块
END 代码块