Acho profundamente estranho que isso seja possível em Ruby (não vou dizer imediatamente como):
obj = #code redacted
print obj.state # Some value.
LValue = obj
print obj.state # Different value!
Seu desafio é criar código aproximadamente neste formulário. Crie um objeto e atribua-o a uma variável. Ele deve ter algum atributo definido (ou método determinístico e idempotente) como state
acima, que muda após o objeto ser atribuído a um novo identificador ( LValue
acima), mesmo se você ainda usar o identificador antigo ( obj
acima) para fazer referência a ele.
Edite para enfatizar : state
ou o equivalente deve ser idempotente, portanto, criar um acessador que modifique o valor ou, por qualquer outro motivo, retorne resultados diferentes quando chamado várias vezes seguidas, não é uma solução válida. Ou, mais simplesmente, deve ser a atribuição que muda de estado.
Qualquer idioma com atribuição é elegível, embora haja provavelmente alguns em que não há solução totalmente legítima. Vou postar minha resposta em Ruby se ninguém mais receber depois de alguns dias e aceitar as respostas mais votadas em uma base contínua.
(setq a (list "val")) (setq b (nconc a "val2"))
por exemplo. a
acaba avaliando ("val" . "val2")
nesse momento.
LValue = obj
É necessário que a linha sejastate
realmente alterada? (Eu poderia apenas fazer uma propriedade em C # que incrementos cada vez que você obtê-lo)