Kotlin haqida standart delegatlar Kuzatiladigan xususiyatlar Delegatni taqdim etish



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

class Example {
var p: String by Delegate()
}
Quyidagicha Ularning sintaksisi quyidagicha: val/var <имя свойства>: <Тип> by <выражение>. Keyin ifoda By bir emas vakil : qo'ng'iroqlari ( get(), set()mol-mulkiga) bu ifoda tomonidan ko'rib qilinadi. Delegat biron bir interfeysni amalga oshirishi shart emas, uning usullari getValue()va setValue()ma'lum bir imzosi bo'lishi kifoya :
class Delegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "$thisRef, спасибо за делегирование мне '${property.name}'!"
}

operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("$value было присвоено значению '${property.name} в $thisRef.'")
}
}
Xususiyatning qiymatini o'qiganimizda, sinf pusuli chaqiriladi , birinchi parametr unga xususiyat talab qilingan ob'ektni, ikkinchisi esa p xususiyatining o'zi tavsifini beradi (siz, xususan, mumkin , undan mulk nomini bilib oling). Masalan:getValue()Delegatep
val e = Example()
println(e.p)
Ushbu kod chiqadi
Example@33a17727, спасибо за делегирование мне ‘p’!
Xuddi shunday, biz kirganimizda p, usul deyiladi setValue(). Dastlabki ikkita parametr get () bilan bir xil, uchinchisi berilgan xususiyat qiymati:
e.p = "NEW"
Ushbu kod chiqadi
NEW было присвоено значению ‘p’ в Example@33a17727.
Standart delegatlar
Kotlin standart kutubxonasi bir nechta foydali delegatlarni taqdim etadi:
Lazy xususiyatlar
lazy()bu lambdani qabul qiladigan va Lazydangasa xususiyatni amalga oshirish uchun vakil sifatida xizmat qiladigan sinfning namunasini qaytaradigan funktsiya: birinchi qo'ng'iroq argument sifatida get()berilgan lambda ifodasini ishlaydi lazy()va natijada olingan qiymatni eslab qoladi va keyingi qo'ng'iroqlar hisoblanganlarni qaytaradi qiymat.

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