1

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

ruby 有没有办法以这种方式设置成员的值?

下面的代码:

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

  }
4

1 回答 1

7
foo.bar = 1

这一行本质上是bar=使用参数调用方法1

foo.bar=(1)

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

foo.send "bar=", 1

因此,您的代码应重写为

className.send "#{x}=", 'some value'
于 2013-02-06T06:47:21.837 回答