Latest web development tutorials

rubino Block

Sapete già come definire un metodo di Ruby e come si chiama il metodo. Analogamente, rubino ha il concetto di un blocco.

  • Blocco è composto da un sacco di codice.
  • È necessario prendere un nome del blocco.
  • codice di blocco è sempre racchiuso tra parentesi graffe {} all'interno.
  • Da cui è sempre bloccare la chiamata di funzione con lo stesso nome. Ciò significa che se il nome del blocco per iltest,poi si desidera utilizzare per chiamare questo bloccotest difunzionamento.
  • È possibile utilizzare l'istruzioneyieldper chiamare il blocco.

grammatica

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

Qui potrete imparare a utilizzare una dichiarazioneresasemplice per chiamare il blocco. Potrai anche imparare a usare l'istruzioneyieldcon parametri al blocco richiamato. Nell'esempio, vedrete due tipi di istruzioneyield.

dichiarazioneresa

Diamo un'occhiata a una dichiarazione resa ad esempio:

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

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

Esempi dei risultati operativi di cui sopra come segue:

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

È inoltre possibile passare istruzione yield con i parametri. Ecco un esempio:

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

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

Esempi dei risultati operativi di cui sopra come segue:

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

Qui, dopo la dichiarazioneresaseguita parametri. È anche possibile passare più parametri. Nel blocco, è possibile inserire una variabile tra le due barre verticali per accettare i parametri. Così, nel codice precedente, resa 5 istruzione viene passato come parametro al valore di 5 provette.

Ora, guardate la seguente dichiarazione:

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

Qui, il valore di 5 riceverà la variabile i. Ora, mettiamo osservare la seguente dichiarazione:

puts "你在块 #{i} 内"

Ciò pone la dichiarazione di uscita è:

你在块 5 内

Se si desidera passare più parametri, quindi l'istruzioneyieldè il seguente:

yield a, b

A questo punto, come mostrato nel blocco:

test {|a, b| statement}

I parametri separati da virgole.

Blocchi e metodi

Avete visto tra il blocco e il metodo di come interconnessi. Di solito si utilizza l'istruzione yield chiama il blocco dal metodo con lo stesso nome. Pertanto, il codice è il seguente:

#!/usr/bin/ruby

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

Questo esempio è il modo più semplice per ottenere il blocco. Si utilizza l'istruzioneyieldchiama il blocco di prova.

Ma se l'ultimo parametro prima che il metodo con e quindi è possibile il metodo viene passato un blocco, e questo blocco può essere assegnato a l'ultimo parametro. Se il * e & appaiono anche nella lista dei parametri, e deve essere posto sul retro.

#!/usr/bin/ruby

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

Esempi dei risultati operativi di cui sopra come segue:

Hello World!

BEGIN e blocchi END

Ogni file sorgente di Ruby può dichiarare quando blocchi di codice (inizio blocco) quando il file viene caricato a correre, e dopo il programma termina l'esecuzione blocchi di codice da eseguire (blocco END).

#!/usr/bin/ruby

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

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

Un programma può contenere più iniziare e terminare i blocchi. BEGIN blocco viene eseguito nell'ordine in cui appaiono. blocchi END come appaiono in ordine inverso. Quando viene eseguito, il programma precedente produce i seguenti risultati:

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