English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Conosci già come definire i metodi in Ruby e come chiamarli. Allo stesso modo, Ruby ha il concetto di blocco.
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.
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.
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!
每个 Ruby 源文件可以声明当文件被加载时要运行的代码块(BEGIN 块),以及程序完成执行后要运行的代码块(END 块)。
#!/usr/bin/ruby BEGIN { # 代码块 BEGIN puts "代码块 BEGIN" } END { # 代码块 END puts "代码块 END" } # 代码块 MAIN puts "代码块 MAIN"
一个程序可以包含多个 BEGIN 和 END 块。BEGIN 块按照它们出现的顺序执行。END 块按照它们出现的相反顺序执行。当执行时,上面的程序输出以下结果:
代码块 BEGIN 代码块 MAIN 代码块 END