8 Stimmen

Ruby-Entsprechung von Python setattr()

Nun, fügen Sie mich der Liste der Python-Programmierer hinzu, die sich in Ruby verlieben, aber eine anhaltende PyAddiction haben. Wie der Beitrag über Pythons getattr Ich bin auf der Suche nach dem Ruby-Äquivalent für diese Aufgabe:

setattr(obj, 'attribute', value)

wobei obj eine Objektinstanz ist, attribute der Name eines der Attribute des Objekts in Form einer Zeichenkette und value der Wert dieses Objekts ist. Der entsprechende Code ist:

obj.attribute = value

Ich gehe davon aus, dass es möglich ist (denn alles, was in Python möglich ist, scheint in Ruby jetzt noch einfacher zu sein), kann aber keine Dokumentation dazu finden.

15voto

sepp2k Punkte 352762

Entweder obj.instance_variable_set("@instance_variable", value) o obj.send("instance_variable=", value) .

Ersteres setzt direkt die Instanzvariable. Letzteres ruft die Setter-Methode auf, was natürlich nur funktioniert, wenn es eine Setter-Methode gibt, aber andererseits auch, wenn Sie eine Setter-Methode haben, die nicht nur eine Instanzvariable setzt (oder gar keine Instanzvariable setzt).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X