如何从子类访问访问者的实例变量?

时间:2012-06-06 17:53:36

标签: ruby-on-rails attr-accessor

如何从子类访问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。

2 个答案:

答案 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