当前位置:  开发笔记 > 后端 > 正文

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

如何解决《如何在Ruby中动态调用访问器方法》经验,为你挑选了2个好方法。

无论是否良好实践,我如何在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!



1> Angela..:

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

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



2> Marcin Urban..:

您还可以使用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

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有