Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何访问访问器';子类中的实例变量?_Ruby On Rails_Attr Accessor - Fatal编程技术网

Ruby on rails 如何访问访问器';子类中的实例变量?

Ruby on rails 如何访问访问器';子类中的实例变量?,ruby-on-rails,attr-accessor,Ruby On Rails,Attr Accessor,如何从子类访问attr\u访问器的实例变量 class A attr_accessor :somevar @somevar = 123 puts @somevar end class B < A def meth puts @somevar end end B.new.meth A类 属性存取器:somevar @somevar=123 放置@somevar 结束 B类

如何从子类访问attr\u访问器的实例变量

class A
  attr_accessor :somevar
  @somevar = 123
  puts @somevar
end

class B < A
  def meth
    puts @somevar
  end
end

B.new.meth
A类
属性存取器:somevar
@somevar=123
放置@somevar
结束
B类
nil


另外,我可以使用ActiveSupport。

您需要在initialize方法中设置实例变量——每当创建新的类实例时,都会调用该变量:

class A
  attr_accessor :somevar
  def initialize
    @somevar = 123
  end
end

首先,您没有要指定值的实例。将initialize方法置于A so上创建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
A类
属性存取器:somevar
def初始化(somevar)
@somevar=somevar
结束
结束
B类