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

块 Ruby

Conosci già come definire i metodi in Ruby e come chiamarli. Allo stesso modo, Ruby ha il concetto di blocco.

  • Il blocco è composto da una grande quantità di codice.
  • Devi dare un nome al blocco.
  • Il codice nel blocco è sempre incluso tra parentesi graffe {}.
  • Il blocco parte sempre da una chiamata di funzione con lo stesso nome. Questo significa che se il nome del tuo blocco è se hai bisogno di utilizzare la funzione,那么您要使用函数 se hai bisogno di utilizzare la funzione test
  • per chiamare questo blocco. yield frase per chiamare il blocco. Puoi anche usare

sintassi

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

qui, imparerai come usare un semplice yield frase per chiamare il blocco. Imparerai anche come usare yield frase per chiamare il blocco. Nei casi di esempio, vedrai questi due tipi di yield frase.

yield frase

Ecco un esempio di frase yield:

示例在线

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
def test
   puts "All'interno del metodo test"
   yield
   puts "Sei tornato nel metodo test"
   yield
fine
test {puts "Sei nel blocco"}

以上示例运行结果为:

All'interno del metodo test
Sei nel blocco
Sei tornato nel metodo test
Sei nel blocco

Puoi anche passare una frase yield con parametri. Ecco un esempio:

示例在线

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
def test
   yield 5
   puts "All'interno del metodo test"
   yield 100
fine
test {|i| puts "Sei nel blocco #{i}"}

以上示例运行结果为:

Sei nel blocco 5
All'interno del metodo test
Sei nel blocco 100

In questo caso,yield La frase segue il parametro. Puoi anche passare piu' parametri. Nel blocco, puoi mettere una variabile tra due barre verticali per accettare i parametri. Pertanto, nella frase sopra, la frase yield 5 passa al blocco test il valore 5 come parametro.

Ora, guardiamo la frase seguente:

test {|i| puts "Sei nel blocco #{i}"}

In questo caso, il valore 5 viene ricevuto nella variabile i. Ora, osserva la frase puts seguente:

puts "Sei nel blocco #{i}"

L'output di questa frase puts e':

sei nel blocco 5

Se vuoi passare piu' parametri, allora yield La frase e' la seguente:

yield a, b

A questo punto, il blocco e' il seguente:

test {|a, b| statement}

I parametri sono separati da virgole.

blocco e metodo

Hai gia' visto come il blocco e il metodo si relazionano tra loro. Di solito si usa la frase yield per chiamare il blocco dalla chiamata del metodo che ha lo stesso nome. Pertanto, il codice e' il seguente:

示例在线

#!/usr/bin/ruby
def test
  yield
fine
test{ puts "Hello world"}

Questo e' il modo piu' semplice di implementare un blocco. Usi yield Chiamata di frase test blocco.

Ma se l'ultimo parametro del metodo e' preceduto da un & puoi passare al metodo un blocco, che puo' essere assegnato all'ultimo parametro. Se * e & compaiono entrambi nella lista dei parametri, & deve essere messo alla fine.

示例在线

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

以上示例运行结果为:

Hello World!

代码块 BEGIN 和 END

每个 Ruby 源文件可以声明当文件被加载时要运行的代码块(BEGIN 块),以及程序完成执行后要运行的代码块(END 块)。

示例在线

#!/usr/bin/ruby
BEGIN { 
  # 代码块 BEGIN
  puts "代码块 BEGIN"
} 
END { 
  # 代码块 END
  puts "代码块 END"
}
  # 代码块 MAIN
puts "代码块 MAIN"

一个程序可以包含多个 BEGIN 和 END 块。BEGIN 块按照它们出现的顺序执行。END 块按照它们出现的相反顺序执行。当执行时,上面的程序输出以下结果:

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