Sobes.tech
Junior — Middle

Είναι η τιμή τύπου val αμετάβλητη μετά την δήλωσή της;

sobes.tech AI

Απάντηση από AI

Στην Kotlin, η λέξη-κλειδί val δηλώνει μια αμετάβλητη αναφορά, δηλαδή, μετά την ανάθεση τιμής σε μια μεταβλητή που δηλώνεται με val, δεν μπορεί να αλλάξει αυτή η αναφορά σε άλλο αντικείμενο. Ωστόσο, αυτό δεν σημαίνει ότι το ίδιο το αντικείμενο που αναφέρεται από το val είναι αμετάβλητο. Αν το αντικείμενο είναι μεταβλητό (π.χ., MutableList), η εσωτερική του κατάσταση μπορεί να αλλάξει, παρά το γεγονός ότι η αναφορά val δεν αλλάζει.

Παράδειγμα:

val list = mutableListOf(1, 2, 3)
list.add(4) // Αυτό είναι επιτρεπτό, το περιεχόμενο της λίστας αλλάζει

// list = mutableListOf(5, 6) // Σφάλμα: δεν επιτρέπεται η επαναπροσδιορισμός του `val`

Επομένως, το val εγγυάται την αμετάβλητη αναφορά, αλλά όχι το αντικείμενο.