8

Gibt es eine Möglichkeit (Meta-Programmierung?), Eine Instanzvariable zu lesen/schreiben, wenn wir nur ihren String-Namen kennen?Wie kann man von seinem "String-Namen" auf die Instanzvariable zugreifen?

Zum Beispiel habe ich eine @ my_var Instanzvariable innerhalb einer Klassenmethode verwendet. Während des Prozesses werde ich eine Zeichenfolge "my_var" haben, die mir sagt, dass ich die @ my_var-Instanzvariable ändern soll.

Natürlich könnte ich eine "if" -Anweisung verwenden, aber ich möchte, dass es dynamischer ist, da ich möglicherweise viele verschiedene Instanzvariablen in meiner Methode haben werde.

Ich dachte an etwas mit „my_var“ .classify und etwas anderes ...

Hat jemand eine Ahnung hat?

Danke für Ihre Hilfe

Antwort

14

Verwenden instance_variable_set und instance_variable_get. Beachten Sie, dass die Zeichenfolge die führende Nummer @:

@foo = "bar" 
# => "bar" 
instance_variable_get("@foo") 
# => "bar" 
instance_variable_set("@foo", "baz") 
# => "baz" 
@foo 
# => "baz" 
haben muss