所以我知道你可以通过调用#instance_variables来获取
Ruby中的所有实例变量,但是如果它们尚未设置,那么它们就不会显示出来.
例
class Walrus attr_accessor :flippers,:tusks end w = Walrus.new w.instance_variables # => [] w.tusks # => nil w.instance_variables # => [:@tusks]
我想立即访问attr_accessor定义的所有实例变量.
w = Walrus.new w.instance_variables # => [:@tusks,:@flippers]
解决方法
嗯,它们还不存在.实例变量在第一次分配时就会存在.如果您想在全新的实例中使用它们,请在构造函数中触摸它们.
class Walrus attr_accessor :flippers,:tusks def initialize self.flippers = self.tusks = nil end end w = Walrus.new w.instance_variables # => [:@tusks,:@flippers]