在Ruby中按字符串访问成员?

时间:2012-04-24 14:19:39

标签: ruby

我看起来高低不一,也许我只是有点不练习但我似乎无法找到如何做以下事情。

我有一个字符串/符号,例如"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?

2 个答案:

答案 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')