Me resulta profundamente extraño que esto sea posible en Ruby (no diré de inmediato cómo):
obj = #code redacted
print obj.state # Some value.
LValue = obj
print obj.state # Different value!
Su desafío es crear código aproximadamente de esta forma. Cree un objeto y asígnelo a una variable. Debe tener algún atributo definido (o método determinista e idempotente) como el stateanterior, que cambia después de que el objeto se asigna a un nuevo identificador ( LValuearriba), incluso si todavía usa el identificador objanterior ( arriba) para referirse a él.
Edite para enfatizar : stateo el equivalente debe ser idempotente, por lo que crear un descriptor de acceso que modifique el valor, o por cualquier otro motivo, arroje resultados diferentes cuando se lo llame varias veces seguidas, no es una solución válida. O, más simplemente, tiene que ser la asignación la que cambia el estado.
Cualquier idioma con asignación es elegible, aunque probablemente haya algunos en los que no haya una solución totalmente legítima. Publicaré mi respuesta de Ruby si nadie más la recibe después de unos días, y aceptaré las respuestas mejor votadas de forma continua.
(setq a (list "val")) (setq b (nconc a "val2"))por ejemplo. atermina evaluando como ("val" . "val2")en ese punto.
LValue = objser necesaria la línea parastatecambiar realmente? (Podría hacer una propiedad en C # que se incremente cada vez que la obtenga)