1

public_methodsリストを使用してクラスのメンバーの値を設定したい。ClassNameただし、以下のコードでは、「.member」がクラスのメンバーではないため、「className.member」は機能しません。

そのような方法でメンバーの値を設定する方法はありますか?

以下のコード:

  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 に答える