Junior — Middle
Ποιος είναι ο ρόλος της ιδιότητας 'by lazy' στο Kotlin και σε ποια σενάρια είναι κατάλληλη η χρήση της;
sobes.tech AI
Απάντηση από AI
Στην Kotlin, μια ιδιότητα με τον τροποποιητή by lazy αρχικοποιείται με καθυστέρηση, δηλαδή η τιμή υπολογίζεται μόνο κατά την πρώτη πρόσβαση στην ιδιότητα και όχι κατά τη δημιουργία του αντικειμένου. Αυτό είναι χρήσιμο όταν η αρχικοποίηση είναι απαιτητική σε πόρους ή δεν είναι πάντα απαραίτητη.
Παράδειγμα χρήσης:
val heavyResource by lazy {
println("Αρχικοποίηση")
"Αποτέλεσμα"
}
fun main() {
println("Πριν την πρόσβαση")
println(heavyResource) // Εδώ γίνεται η αρχικοποίηση
println(heavyResource) // Δεν γίνεται ξανά η αρχικοποίηση
}
Σεναρια χρήσης:
- Αναβολή αρχικοποίησης αντικειμένων που δεν χρειάζονται πάντα.
- Βελτιστοποίηση απόδοσης.
- Ασφαλής αρχικοποίηση σε περιβάλλοντα πολλαπλών νημάτων (κατά προεπιλογή, το
lazyείναι ασφαλές για νήματα).