0

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

我有一个字符串/符号,例如"a"or :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 的一个关键部分?

4

2 回答 2

4

您可以send像这样调用 setter 方法:

object_of_class_B.send("#{ string_or_symbol_referencing_the_member }=", 010)
于 2012-04-24T14:23:00.733 回答
1

如果对象还没有属性的访问器,您可以在对象上使用instance_variable_set

例如:

c = SomeClass.new  
c.instance_variable_set(:@a, 'new value')
于 2012-04-24T14:26:34.517 回答