如何从子类访问attr_accessor
的实例变量?
class A
attr_accessor :somevar
@somevar = 123
puts @somevar
end
class B < A
def meth
puts @somevar
end
end
B.new.meth
放nil
...
P.S。我可以使用ActiveSupport。
答案 0 :(得分:1)
您需要在initialize方法中设置实例变量 - 每当创建新的类实例时都会调用它:
class A
attr_accessor :somevar
def initialize
@somevar = 123
end
end
答案 1 :(得分:1)
首先,您没有A的实例来分配值。在A上放置一个初始化方法,这样在创建B的实例时,可以将somevar值作为参数传递给新函数:
class A
attr_accessor :somevar
def initialize(somevar)
@somevar = somevar
end
end
class B < A
def meth
puts @somevar
end
end
B.new('LOL').meth