无论是否良好实践,我如何在Ruby中动态调用访问器方法?
这是一个示例类:
class Test_Class
attr_accessor :a, :b
end
Run Code Online (Sandbox Code Playgroud)
我可以使用Object.send方法来读取变量...
instance.a = "value"
puts( instance.send( "a" ) )
# => value
Run Code Online (Sandbox Code Playgroud)
但是我很难写信给它.这些抛出"错误的参数数量(1表示0)(ArgumentError)"
instance.send("a", "value")
Run Code Online (Sandbox Code Playgroud)
和
instance.method("a").call("value")
Run Code Online (Sandbox Code Playgroud)
请帮帮我StackOverflow!
Ang*_*ela 52
我不是红宝石专家,但我认为你可以这样做:
instance.send("a=", "value")
Run Code Online (Sandbox Code Playgroud)
Mar*_*ski 11
您还可以使用instance_variable_*
函数直接访问对象的实例变量:
instance = Test_Class.new # => #<Test_Class:0x12b3b84>
# 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9492 次 |
最近记录: |