Sobes.tech
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() // τιμή που υπολογίζεται κατά την εκτέλεση