我看起来高低不一,也许我只是有点不练习但我似乎无法找到如何做以下事情。
我有一个字符串/符号,例如"a"
或:a
。类B
包含数据成员@a
。我希望以这种方式访问该成员:
def method object_of_class_B, string_or_symbol_referencing_the_member
object_of_class_B.some_other_method string_or_symbol_referencing_the_member = 010
end
所以我可以致电:
method c, :a
并具有与我写过的相同的效果:
c.a = 010
有人能指出我的解决方案吗?在我的学习中,我是否完全错过了一篇关键的Ruby?
答案 0 :(得分:4)
您可以使用send
来调用setter方法,如下所示:
object_of_class_B.send("#{ string_or_symbol_referencing_the_member }=", 010)
答案 1 :(得分:1)
如果对象尚未拥有该属性的访问者,则可以在该对象上使用instance_variable_set。
例如:
c = SomeClass.new
c.instance_variable_set(:@a, 'new value')