Ich finde es zutiefst seltsam, dass dies in Ruby möglich ist (ich werde nicht gleich sagen, wie):
obj = #code redacted
print obj.state # Some value.
LValue = obj
print obj.state # Different value!
Ihre Herausforderung besteht darin, Code ungefähr in dieser Form zu erstellen. Erstellen Sie ein Objekt und weisen Sie es einer Variablen zu. Es sollte ein definiertes Attribut (oder eine deterministische, idempotente Methode) wie stateoben haben, das sich ändert, nachdem das Objekt einem neuen Bezeichner ( LValueoben) zugewiesen wurde , auch wenn Sie den alten Bezeichner ( objoben) weiterhin verwenden, um darauf zu verweisen.
Zur Hervorhebung bearbeiten : stateoder das Äquivalent muss idempotent sein. Die Erstellung eines Accessors, der den Wert ändert oder aus einem anderen Grund unterschiedliche Ergebnisse liefert, wenn er mehrmals hintereinander aufgerufen wird, ist keine gültige Lösung. Oder einfacher gesagt, es muss die Zuweisung sein, die den Zustand ändert.
Jede Sprache mit Zuweisung ist förderfähig, obwohl es wahrscheinlich einige gibt, für die es keine völlig legitime Lösung gibt. Ich werde meine Ruby-Antwort veröffentlichen, wenn sie nach ein paar Tagen niemand anderes erhält, und die Antworten mit den höchsten Stimmen fortlaufend annehmen.
(setq a (list "val")) (setq b (nconc a "val2"))zum Beispiel. aendet ("val" . "val2")zu diesem Zeitpunkt zu bewerten .
LValue = objLeitung benötigt werden, umstatesich tatsächlich zu ändern? (Ich könnte einfach eine Eigenschaft in C # erstellen, die jedes Mal erhöht wird, wenn Sie sie erhalten.)