即使在这个简单的程序中,我也只是得到同样的东西:
var = "string"
def ex()
puts var
end
ex()
它给了我:未定义的局部变量或方法' var'用于#Context:0xf4b640。
这是怎么回事??
外部局部变量不能在def
关键字定义的方法中访问(因为def
创建了全新的上下文,与周围的上下文完全分离)。你可以在define_method
:
var = "string"
define_method :ex do
puts var
end
ex
但是,请注意,您应该很少需要这个(它可能会把您的编码生活变成地狱)。只要使用对象和instance_variables就可以了。