Saya merasa sangat aneh bahwa ini dimungkinkan di Ruby (saya tidak akan langsung mengatakan caranya):
obj = #code redacted
print obj.state # Some value.
LValue = obj
print obj.state # Different value!
Tantangan Anda adalah membuat kode secara kasar dari formulir ini. Buat objek dan tetapkan ke variabel. Seharusnya memiliki beberapa atribut yang didefinisikan (atau deterministik, metode idempoten) seperti di state
atas, yang berubah setelah objek ditugaskan ke pengidentifikasi baru (di LValue
atas), bahkan jika Anda masih menggunakan pengidentifikasi lama (di obj
atas) untuk merujuk padanya.
Edit untuk penekanan : state
atau yang setara harus idempoten, jadi membuat accessor yang mengubah nilai, atau karena alasan lain mengembalikan hasil yang berbeda ketika dipanggil beberapa kali berturut-turut, bukan solusi yang valid. Atau, lebih sederhana, itu harus menjadi tugas yang mengubah status.
Bahasa apa pun dengan tugas memenuhi syarat, meskipun mungkin ada beberapa di mana tidak ada solusi yang sepenuhnya sah. Saya akan memposting jawaban Ruby saya jika tidak ada orang lain yang mendapatkannya setelah beberapa hari, dan menerima jawaban dengan suara terbanyak secara bergulir.
(setq a (list "val")) (setq b (nconc a "val2"))
misalnya. a
akhirnya mengevaluasi ("val" . "val2")
pada saat itu.
LValue = obj
garis diperlukan untukstate
benar-benar berubah? (Saya hanya bisa membuat properti di C # yang bertambah setiap kali Anda mendapatkannya)