我有以下代码将实例变量添加到对象
class MyClass
def initialize(x)
@var = x
end
end
obj = MyClass.new(4)
obj.instance_variable_set(:@a, 5)
我可以动态地将attr_accessor
添加到新添加的实例变量中吗?
或者我必须使用instance_variable_get()
和instance_variable_set()
得到并设定它?
答案 0 :(得分:4)
您可以将attr_accessor
发送到对象的单例类:
obj = MyClass.new(4)
obj.singleton_class.class_eval { attr_accessor :a }
obj.a = 5
obj.a #=> 5
这不会影响其他实例:
another_obj = MyClass.new(4)
another_obj.a #=> undefined method 'a'