为什么当我尝试访问变量时,我总是收到 #<Context:0xf4b640> 的未定义的局部变量或方法" "?



即使在这个简单的程序中,我也只是得到同样的东西:

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就可以了。

相关内容

最新更新