Middle
Kotlin-ში რა არის 'lazy' და 'lateinit'?
sobes.tech AI
პასუხი AI-სგან
lazy - ეს არის თვისების დელეგატი გადადებული და უცვლელი (read-only) თვისებების (val)თვის. მნიშვნელობა გამოითვლება პირველად მიმართვისას და შემდეგ კეშდება.
// lazy-ის გამოყენების მაგალითი
val lazyValue: String by lazy {
println("ინიცილიზაცია") // გამოჩნდება მხოლოდ ერთხელ პირველ მიმართვაზე
"გამარჯობა, lazy!"
}
lateinit - მოდიფიკატორი მერყევი (mutable) თვისებების (var)თვის, რომელიც საშუალებას აძლევს გადადოს ინიციალიზაცია პირველ მიმართვამდე. თვისება უნდა იყოს non-nullable. ინიციალიზაციის წინ მიმართვა იწვევს UninitializedPropertyAccessException-ს.
// lateinit-ის გამოყენების მაგალითი
lateinit var lateinitVariable: String
fun initializeVariable() {
lateinitVariable = "გამარჯობა, lateinit!"
}
fun useVariable() {
// ინიციალიზაციის შემოწმება (სურვილისამებრ, მაგრამ რეკომენდირებულია)
if (::lateinitVariable.isInitialized) {
println(lateinitVariable)
} else {
println("მნიშვნელობა ჯერ არ არის ინიციალიზებული")
}
}
ძირითადი განსხვავებები:
| მახასიათებელი | lazy |
lateinit |
|---|---|---|
| თვისების ტიპი | val (მკითხველი בלבד) |
var (მოძრავი) |
| ნულზე თანასწორობა | შეიძლება იყოს nullable ან non-nullable | უნდა იყოს non-nullable |
| ინიციალიზაცია | ავტომატურად, პირველ მიმართვაზე | ხელით |
| გადადება | დიახ, პირველ მიმართვაზე გამოთვლა | დიახ, გარეშე ინიციალიზაცია |
| ნაკადი უსაფრთხოება | ჩვეულებრივ, სინქრონიზაცია, ვარიანტები | გარანტირებული არა, კონტექსტზეა დამოკიდებული |
| მიმართვის დროს გამოტოვების შემთხვევაში შეცდომა | არა, ავტომატურად ინიციალიზდება | UninitializedPropertyAccessException |