Ruby中有没有办法使用public_methods设置类成员的值

Rah*_*eel 1 ruby ruby-on-rails

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

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

代码如下:

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

  }
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 7

foo.bar = 1
Run Code Online (Sandbox Code Playgroud)

这一行本质上是一个bar=带参数的方法的调用1.

foo.bar=(1)
Run Code Online (Sandbox Code Playgroud)

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

foo.send "bar=", 1
Run Code Online (Sandbox Code Playgroud)

因此,您的代码将被重写为

className.send "#{x}=", 'some value'
Run Code Online (Sandbox Code Playgroud)