Trovo profondamente strano che ciò sia possibile in Ruby (non dirò immediatamente come):
obj = #code redacted
print obj.state # Some value.
LValue = obj
print obj.state # Different value!
La tua sfida è quella di creare il codice all'incirca di questo modulo. Crea un oggetto e assegnalo a una variabile. Dovrebbe avere un attributo definito (o metodo deterministico, idempotente) come state
sopra, che cambia dopo che l'oggetto è stato assegnato a un nuovo identificatore ( LValue
sopra), anche se si utilizza ancora il vecchio identificatore ( obj
sopra) per fare riferimento ad esso.
Modifica per enfasi : state
o l'equivalente deve essere idempotente, quindi la creazione di un accessorio che modifica il valore, o per qualsiasi altro motivo restituisce risultati diversi quando viene chiamato più volte di seguito, non è una soluzione valida. O, più semplicemente, deve essere il compito che cambia lo stato.
Qualsiasi lingua con assegnazione è idonea, anche se probabilmente ce ne sono alcune in cui non esiste una soluzione completamente legittima. Pubblicherò la mia risposta su Ruby se nessun altro lo riceverà dopo pochi giorni e accetterò le risposte più votate su base continuativa.
(setq a (list "val")) (setq b (nconc a "val2"))
ad esempio. a
finisce per valutare come ("val" . "val2")
a quel punto.
LValue = obj
linea deve essere obbligatoria perstate
cambiare effettivamente? (Potrei semplicemente creare una proprietà in C # che aumenta ogni volta che la ottieni)