Berasal dari latar belakang OOP (Jawa), saya belajar Scala sendiri. Sementara saya dapat dengan mudah melihat keuntungan dari menggunakan objek yang tidak dapat diubah secara individual, saya mengalami kesulitan melihat bagaimana seseorang dapat merancang seluruh aplikasi seperti itu. Saya akan memberi contoh:
Katakanlah saya memiliki objek yang mewakili "bahan" dan sifat-sifatnya (saya merancang permainan, jadi saya benar-benar memiliki masalah itu), seperti air dan es. Saya akan memiliki "manajer" yang memiliki semua contoh materi seperti itu. Satu properti akan menjadi titik beku dan leleh, dan bahan itu membeku atau meleleh.
[EDIT] Semua instance materi adalah "singleton", semacam Java Enum.
Saya ingin "air" untuk mengatakan itu membeku menjadi "es" pada 0C, dan "es" untuk mengatakan itu mencair menjadi "air" pada 1C. Tetapi jika air dan es tidak dapat diubah, mereka tidak dapat mendapatkan referensi satu sama lain sebagai parameter konstruktor, karena salah satunya harus dibuat terlebih dahulu, dan bahwa seseorang tidak bisa mendapatkan referensi ke yang lain yang belum ada sebagai parameter konstruktor. Saya bisa menyelesaikan ini dengan memberi mereka berdua referensi ke manajer sehingga mereka dapat meminta itu untuk menemukan contoh material lain yang mereka butuhkan setiap kali mereka diminta untuk pembekuan / sifat lelehnya, tetapi kemudian saya mendapatkan masalah yang sama antara manajer dan bahan-bahan, yang mereka butuhkan referensi satu sama lain, tetapi hanya dapat disediakan di konstruktor untuk salah satu dari mereka, sehingga manajer atau bahan tidak dapat berubah.
Apakah tidak ada jalan keluar untuk masalah ini, atau apakah saya perlu menggunakan teknik pemrograman "fungsional", atau beberapa pola lain untuk menyelesaikannya?
h2o
bahan