如何在Ruby中动态调用访问器方法

无论是否良好实践,我如何在Ruby中动态调用访问器方法?

这是一个示例类:

class Test_Class attr_accessor :a, :b end 

我可以使用Object.send方法来读取变量……

 instance.a = "value" puts( instance.send( "a" ) ) # => value 

但是我很难写信给它。 这些抛出“错误的参数数量(1表示0)(ArgumentError)”

 instance.send("a", "value") 

 instance.method("a").call("value") 

请帮帮我StackOverflow!

我不是ruby专家,但我认为你可以这样做:

 instance.send("a=", "value") 

您还可以使用instance_variable_*函数直接访问对象的实例变量:

 instance = Test_Class.new # => # # instance variables are lazily created after first use of setter, # so for now instance variables list is empty: instance.instance_variables # => [] instance.instance_variable_set(:@a, 123) # => 123 instance.a # => 123 instance.instance_variables # => ["@a"] instance.instance_variable_get("@a") # => 123