En este ejemplo,No entiendo rubí ámbito local
def foo(x)
if(x > 5)
bar = 100
end
puts bar
end
Entonces foo (6) Salidas: 100 y fu (3) Salidas nada.
Sin embargo, si he cambiado la definición de
def foo(x)
if(x > 5)
bar = 100
end
puts bob
end
consigo un error "variable local o método no definido".
Así que mi pregunta es ¿por qué no recibo este error cuando llamo a foo (3) y la barra nunca se establece?
Gracias, sí, entendí dónde estaba el error de bob simplemente no estaba seguro de por qué no recibía un error de barra. ¿Sabes si puedo confiar en este comportamiento, es parte de la especificación? Por ejemplo, ¿puedo verificar la barra para nil después de la instrucción if o debo declarar también explícitamente bar = nil antes de la instrucción if? – rebo
Sí, este es un comportamiento confiable. Declarar bar = nil seguramente sería más explícito. Pero no sé que la mayoría de los rubyistas harían eso, sin embargo. Si mantiene sus métodos pequeños, no debería ser difícil de entender o ver de dónde viene el bar. – Todd