Kotlin haqida standart delegatlar Kuzatiladigan xususiyatlar Delegatni taqdim etish


val lazyValue: String by lazy { println("computed!"



Yüklə 34,89 Kb.
səhifə7/10
tarix24.07.2023
ölçüsü34,89 Kb.
#137314
1   2   3   4   5   6   7   8   9   10
Kotlin haqida

val lazyValue: String by lazy {
println("computed!")
"Hello"
}

fun main(args: Array) {
println(lazyValue)
println(lazyValue)
}
Ushbu kod chiqadi:
computed!
Hello
Hello
Odatiy bo'lib, lazy xususiyatlarni hisoblash sinxronlashtiriladi : qiymat faqat bitta bajarilish satrida hisoblab chiqiladi va boshqa barcha oqimlar bir xil qiymatni ko'rishlari mumkin. Agar sinxronizatsiya zarur bo'lmasa, uni LazyThreadSafetyMode.PUBLICATIONfunktsiyaga parametr sifatida o'tkazing lazy(), shunda bir nechta iplar bir vaqtning o'zida hisoblashni amalga oshirishi mumkin. Yoki ishga tushirish har doim bir xil ijro etilishida sodir bo'lishiga amin bo'lsangiz, siz LazyThreadSafetyMode.NONEhar qanday ipning xavfsizligini kafolatlamaydigan rejimdan foydalanishingiz mumkin .
Kuzatiladigan xususiyatlar
Funktsiya Delegates.observable()ikkita argumentni oladi: xususiyatning boshlang'ich qiymati va xususiyat o'zgarganda chaqiriladigan ishlov beruvchi (lambda). Ishlovchining uchta parametri bor: o'zgartirilayotgan xususiyat tavsifi, eski qiymat va yangi qiymat.
import kotlin.properties.Delegates

class User {
var name: String by Delegates.observable("") {
prop, old, new ->
println("$old -> $new")
}
}

fun main(args: Array) {
val user = User()
user.name = "first"
user.name = "second"
}
Ushbu kod chiqadi:
-> first
first -> second
Agar siz ba'zi bir qiymatlarning berilishini oldini olishga qodir bo'lsangiz, vetoable()uning o'rniga funktsiyadan foydalaning observable().
Xususiyatlarni assotsiativ ro'yxatda saqlash
Vakiliy xususiyatlar uchun eng keng tarqalgan foydalanish holatlaridan biri bu xususiyatlarni assotsiativ ro'yxatda saqlashdir. Bu "dinamik" kodda, masalan, JSON bilan ishlashda foydalidir:

Yüklə 34,89 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin