Tôi thấy thật kỳ lạ khi điều này có thể xảy ra ở Ruby (Tôi sẽ không nói ngay lập tức như thế nào):
obj = #code redacted
print obj.state # Some value.
LValue = obj
print obj.state # Different value!
Thách thức của bạn là tạo mã đại khái của hình thức này. Tạo một đối tượng và gán nó cho một biến. Nó nên có một số thuộc tính được xác định (hoặc phương thức xác định, idempotent) như state
ở trên, thay đổi sau khi đối tượng được gán cho một định danh mới ( LValue
ở trên), ngay cả khi bạn vẫn sử dụng định danh cũ ( obj
ở trên) để tham chiếu đến nó.
Chỉnh sửa để nhấn mạnh : state
hoặc tương đương phải là idempotent, do đó, việc tạo một trình truy cập sửa đổi giá trị hoặc vì bất kỳ lý do nào khác trả về kết quả khác nhau khi được gọi nhiều lần liên tiếp, không phải là một giải pháp hợp lệ. Hay đơn giản hơn, nó phải là bài tập thay đổi trạng thái.
Bất kỳ ngôn ngữ nào có sự phân công đều đủ điều kiện, mặc dù có thể có một số nơi không có giải pháp hoàn toàn hợp pháp. Tôi sẽ đăng câu trả lời Ruby của mình nếu không có ai nhận được câu trả lời sau vài ngày và chấp nhận câu trả lời được bình chọn cao nhất trên cơ sở.
(setq a (list "val")) (setq b (nconc a "val2"))
ví dụ. a
kết thúc đánh giá như ("val" . "val2")
tại thời điểm đó.
LValue = obj
dòng cần thiếtstate
để thực sự thay đổi? (Tôi chỉ có thể tạo một tài sản trong C # tăng lên mỗi khi bạn nhận được nó)