2012-04-24 63 views
0

我看起来很高,也许我只是练习一点,但我似乎无法找到如何做到以下几点。在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的一部分吗?

回答

4

您可以使用send调用设置方法是这样的:

object_of_class_B.send("#{ string_or_symbol_referencing_the_member }=", 010) 
1

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

例如:

c = SomeClass.new 
c.instance_variable_set(:@a, 'new value') 
+0

这仅与调用'C.A =“新value''同样的效果,如果一个'='方法设置实例变量'@了'并没有别的。例如,如果'c'是一个活动记录对象,那么使用instance_variable_set不会产生所需的效果。 – sepp2k 2012-04-24 14:28:52

+0

虽然第二个想法,OP确实说他有一个实例变量@a。所以没关系...... – sepp2k 2012-04-24 14:29:57

+0

你是对的。 @xuinkrbin需要熟悉他/她'摆弄'的课程。 – Jamie 2012-04-24 14:32:50