Je trouve profondément bizarre que cela soit possible dans Ruby (je ne dirai pas immédiatement comment):
obj = #code redacted
print obj.state # Some value.
LValue = obj
print obj.state # Different value!
Votre défi est de créer du code à peu près de cette forme. Créez un objet et affectez-le à une variable. Il doit avoir un attribut défini (ou une méthode déterministe et idempotente) comme stateci-dessus, qui change après que l'objet est affecté à un nouvel identifiant ( LValueci-dessus), même si vous utilisez toujours l'ancien identifiant ( objci-dessus) pour vous y référer.
Modifier pour mettre l'accent : stateou l'équivalent doit être idempotent, donc la création d'un accesseur qui modifie la valeur, ou pour toute autre raison renvoie des résultats différents lorsqu'il est appelé plusieurs fois de suite, n'est pas une solution valide. Ou, plus simplement, ce doit être l'affectation qui change l'état.
Toute langue avec affectation est éligible, bien qu'il y en ait probablement où il n'y a pas de solution entièrement légitime. Je publierai ma réponse Ruby si personne d'autre ne l'obtient après quelques jours et j'accepterai les réponses les plus votées sur une base continue.
(setq a (list "val")) (setq b (nconc a "val2"))par exemple. afinit par évaluer comme ("val" . "val2")à ce moment-là.
LValue = objligne doit-elle être requise pourstatechanger réellement? (Je pourrais simplement créer une propriété en C # qui augmente à chaque fois que vous l'obtenez)