1

如何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...

PS 我可以使用 ActiveSupport。

4

2 回答 2

1

您需要在初始化方法中设置实例变量——每当创建新的类实例时都会调用它:

class A
  attr_accessor :somevar
  def initialize
    @somevar = 123
  end
end
于 2012-06-06T18:04:40.960 回答
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
于 2012-06-06T18:05:26.780 回答