Junior — Middle
Ποιες είναι οι διαφορές μεταξύ των λέξεων-κλειδιών const val και val σε Kotlin;
sobes.tech AI
Απάντηση από AI
Στην Kotlin, η λέξη-κλειδί val δηλώνει μια αμετάβλητη μεταβλητή (μόνο για ανάγνωση), της οποίας η τιμή μπορεί να αποδοθεί μία φορά κατά την αρχικοποίηση, αλλά η ίδια η τιμή μπορεί να υπολογιστεί κατά την εκτέλεση.
Το const val είναι μια σταθερά χρόνου μεταγλώττισης, που πρέπει να είναι τύπου primitive ή string και να αρχικοποιείται με μια τιμή γνωστή κατά τη μεταγλώττιση. Τέτοιες σταθερές μπορούν να χρησιμοποιηθούν, για παράδειγμα, σε annotations ή ως παράμετροι που απαιτούν σταθερές.
Βασικές διαφορές:
- Το
const valείναι πάντα μια στατική σταθερά, προσβάσιμη σε επίπεδο κλάσης (μόνο σε αντικείμενα ή σε επίπεδο κορυφής). - Το
valείναι μια κανονική αμετάβλητη ιδιότητα, που μπορεί να υπολογιστεί δυναμικά.
Παράδειγμα:
const val MAX_COUNT = 10 // σταθερά χρόνου μεταγλώττισης
val currentTime = System.currentTimeMillis() // τιμή που υπολογίζεται κατά την εκτέλεση