8

インスタンス変数の文字列名を知っているだけでインスタンス変数を読み書きする方法(メタプログラミング?)はありますか?"string name"からインスタンス変数にアクセスするには?

たとえば、私は@my_varインスタンス変数をクラスメソッド内で使用しています。 処理中に、@ my_varインスタンス変数を変更するように指示する文字列 "my_var"を持っていきます。

"if"ステートメントを使用することもできますが、私のメソッドには潜在的に多くのインスタンス変数があるので、より動的にしたいと思っています。

私はと他の何か.classify 「MY_VAR」と何かを考えていた...

は、誰もが手掛かりを持っていますか?あなたの助け

答えて

14

使用instance_variable_setinstance_variable_getため

感謝。文字列の先頭には@が必要です。

@foo = "bar" 
# => "bar" 
instance_variable_get("@foo") 
# => "bar" 
instance_variable_set("@foo", "baz") 
# => "baz" 
@foo 
# => "baz" 
関連する問題