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 state
ci-dessus, qui change après que l'objet est affecté à un nouvel identifiant ( LValue
ci-dessus), même si vous utilisez toujours l'ancien identifiant ( obj
ci-dessus) pour vous y référer.
Modifier pour mettre l'accent : state
ou 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. a
finit par évaluer comme ("val" . "val2")
à ce moment-là.
LValue = obj
ligne doit-elle être requise pourstate
changer réellement? (Je pourrais simplement créer une propriété en C # qui augmente à chaque fois que vous l'obtenez)