class Person
attr_accessor :fn, :mn, :ln
def whole_name
n = fn + " "
n = n + "#{mn} " if mn
n << ln
end
end
dave = Person.new
dave.fn = "Jim"
puts dave.whole_name
请在这里写一下从类定义外部引用局部变量n(来自类方法whole_name)的语法吗?
谢谢。
答案 0 :(得分:1)
变量n超出范围。你需要设置一个实例变量getter并调用它。
如果您感到困惑,attr_accessor等同于定义getter和setter方法:
attr_accessor :prop
与
相同def prop
@prop
end
def prop=(value)
@prop = value
end
这里,@ prop是一个为对象的每个实例单独维护的变量。它不是直接对另一个对象可见,而是通过getter方法公开。