0

私は高くも低くも見えました、そして多分私は少し練習から外れています、しかし私は以下をする方法を見つけることができないようです。

たとえば"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

2 に答える 2

4

send次のように setter メソッドを呼び出すために使用できます。

object_of_class_B.send("#{ string_or_symbol_referencing_the_member }=", 010)
于 2012-04-24T14:23:00.733 に答える
1

If the object does not already have an accessor for the attribute, you can use instance_variable_set on the object.

For example:

c = SomeClass.new  
c.instance_variable_set(:@a, 'new value')
于 2012-04-24T14:26:34.517 に答える