当我尝试访问变量时,为什么我总是得到 undefined local variable or method "" for #<Context:0xf4b640>?

Why do i keep getting undefined local variable or method "" for #<Context:0xf4b640> when i try to access the variable?

即使在这个简单的程序中,我也一直得到同样的结果:

var = "string"

def ex()
  puts var
end

ex()

它给了我:#Context:0xf4b640 的未定义局部变量或方法 `var'。

这里发生了什么???

在使用 def 关键字定义的方法中无法访问外部局部变量(因为 def 创建了全新的上下文,与周围的上下文完全分离)。但是,您可以在 define_method:

定义的方法中访问它
var = "string"

define_method :ex do
  puts var
end

ex

但是请注意,您应该很少需要它(它会使您的编码生活陷入地狱)。只需使用对象和 instance_variables 即可。