2012-07-23 17 views
9

Sto usando Ruby 1.8.7. Avrei giurato di aver già scritto le mie funzioni in fondo alla mia sceneggiatura e ha funzionato bene.Metodi di ruby ​​in fondo alla sceneggiatura?

Devo metterli in alto? Sembra essere l'unico modo in cui lavorano ora. Non un grande affare. Preferisco semplicemente averli in fondo, quindi ho pensato di chiedere.

+1

Avete qualche codice di cemento si hanno problemi con? –

risposta

15

È possibile eseguire il codice di inizializzazione in uno o più blocchi BEGIN (ereditati da Perl, che li ha ereditati da awk).

can_i_do_this? #=>yes 

BEGIN { 
    def can_i_do_this? 
    puts "yes" 
    end 
} 

E per completezza, ci sono anche end-blocchi:

END { 
    can_i_do_this? #=> yes 
} 

def can_i_do_this? 
    puts "yes" 
end 
5
a 
def a 
    puts "Hello world!" 
end 

esecuzione di questo script in Ruby vi darà:

script.rb:1:in `<main>': undefined local variable or method `a' for main:Object (NameError) 

Quindi no, non è possibile averli in fondo. Poiché Ruby è un linguaggio interpretato, qualsiasi codice viene analizzato ed elaborato SOLO in runtime. Pertanto, è possibile eseguire solo codice (metodi di chiamata, utilizzare variabili ...) che sono già stati definiti prima del riferimento effettivo.

+0

Fresco. Andrà bene. Grazie per la spiegazione. –