Я нахожу глубоко странным, что это возможно в Ruby (я не буду сразу говорить, как):
obj = #code redacted
print obj.state # Some value.
LValue = obj
print obj.state # Different value!
Ваша задача - создать код примерно такой формы. Создайте объект и назначьте его переменной. Он должен иметь некоторый определенный атрибут (или детерминированный, идемпотентный метод), как state
указано выше, который изменяется после того, как объекту присвоен новый идентификатор (см. LValue
Выше), даже если вы все еще используете старый идентификатор (см. obj
Выше) для ссылки на него.
Отредактируйте для выделения : state
или эквивалент должен быть идемпотентным, поэтому создание метода доступа, который изменяет значение или по любой другой причине возвращает разные результаты при вызове несколько раз подряд, не является допустимым решением. Или, проще говоря, это должно быть присвоение, которое изменяет состояние.
Любой язык с заданием является приемлемым, хотя, вероятно, есть такие, где нет полностью законного решения. Я опубликую свой ответ Ruby, если никто не получит его через несколько дней, и буду принимать ответы с наибольшим количеством голосов по мере поступления.
(setq a (list "val")) (setq b (nconc a "val2"))
например. a
в конечном итоге оценки, как ("val" . "val2")
на тот момент.
LValue = obj
линия быть обязательной дляstate
фактического изменения? (Я мог бы просто сделать свойство в C #, которое увеличивается каждый раз, когда вы его получаете)