从类方法中引用外部类的局部变量

时间:2013-11-17 22:08:16

标签: ruby

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)的语法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

变量n超出范围。你需要设置一个实例变量getter并调用它。

如果您感到困惑,attr_accessor等同于定义getter和setter方法:

attr_accessor :prop

相同
def prop
  @prop
end

def prop=(value)
  @prop = value
end

这里,@ prop是一个为对象的每个实例单独维护的变量。它不是直接对另一个对象可见,而是通过getter方法公开。