2012-07-23 17 views
9

Estoy usando ruby ​​1.8.7. Podría haber jurado que escribí mis funciones en la parte inferior de mi script antes y funcionó bien.Métodos de Ruby en la parte inferior de la secuencia de comandos?

¿Tengo que ponerlos en la parte superior? Parece ser la única forma en que trabajan ahora. No es un gran trato. Solo prefiero tenerlos en la parte inferior, así que pensé en preguntar.

+1

¿Tiene un código concreto que está teniendo problemas con? –

Respuesta

15

Puede inicializar el código en uno o más bloques BEGIN (heredados de Perl, que los heredó de awk).

can_i_do_this? #=>yes 

BEGIN { 
    def can_i_do_this? 
    puts "yes" 
    end 
} 

está completo y si, también hay bloques terminales:

END { 
    can_i_do_this? #=> yes 
} 

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

ejecutar este script en Ruby le dará:

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

Así que no, no se puede tener de ellos en la parte inferior. Como Ruby es un lenguaje interpretado, cualquier código se analiza y procesa en tiempo de ejecución SOLAMENTE. Por lo tanto, solo puede ejecutar código (métodos de llamada, variables de uso ...) que ya se han definido antes de la referencia real.

+0

Cool. Hará. Gracias por la explicación. –

Cuestiones relacionadas