2013-02-06 23 views
1

我想使用public_methods列表来设置类的成员的值。但是在下面给出的代码中,“className.member”将不起作用,因为“.member”不是ClassName类的成员。有没有办法在Ruby中使用public_methods设置类的成员的值

红宝石有没有什么办法以这种方式设置成员的价值?

在下面的代码:

membersArray = className.public_methods 
    membersArray.each {|x| 
     member = x.to_s 
     className.member = "some value" 
    end 

    } 

回答

7
foo.bar = 1 

这条线是,本质上,方法bar=与参数1调用。

foo.bar=(1) 

您可以调用方法使用动态send方法

foo.send "bar=", 1 

所以,你的代码将被改写为

className.send "#{x}=", 'some value' 
+0

非常感谢它的工作:) – Raheel

相关问题