类访问器返回nil

时间:2014-04-14 04:14:05

标签: ruby

class Foo
  class << self
    attr_accessor :var
  end
end

class Bar < Foo
  var = "bar"
  p var   # print "bar"
end

p Bar.var # print nil

为什么Bar.var没有返回“bar”?

如何为类变量添加getter / setter?

1 个答案:

答案 0 :(得分:1)

class Bar < Foo
  var = "bar" # this is assignment to local variable, not the accessor
end

使用self告诉ruby您要调用该方法,而不是创建局部变量。

class Foo
  class << self
    attr_accessor :var
  end
end

class Bar < Foo
  self.var = "bar"
  var # => "bar"
end

Bar.var # => "bar"