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 state
anterior, que cambia después de que el objeto se asigna a un nuevo identificador ( LValue
arriba), incluso si todavía usa el identificador obj
anterior ( arriba) para referirse a él.
Edite para enfatizar : state
o 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. a
termina evaluando como ("val" . "val2")
en ese punto.
LValue = obj
ser necesaria la línea parastate
cambiar realmente? (Podría hacer una propiedad en C # que se incremente cada vez que la obtenga)