Kotlin haqida standart delegatlar Kuzatiladigan xususiyatlar Delegatni taqdim etish



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

class User(val map: Map) {
val name: String by map
val age: Int by map
}
Ushbu misolda konstruktor assotsiativ ro'yxatni oladi
val user = User(mapOf(
"name" to "John Doe",
"age" to 25
))
Belgilangan xususiyatlar ushbu assotsiativ ro'yxatdagi qiymatlarni oladi (mag'lubiyat tugmachalari bo'yicha)
println(user.name) // Prints "John Doe"
println(user.age) // Prints 25
Bundan tashqari, agar siz MutableMapuning o'rniga foydalansangiz Map, o'zgaruvchan xususiyatlar (var) qo'llab-quvvatlanadi:
class MutableUser(val map: MutableMap) {
var name: String by map
var age: Int by map
}
Faqat o'qish uchun (masalan, val ) xususiyat uchun vakil getValuequyidagi parametrlarni qabul qiladigan funktsiyani ta'minlashi kerak :

  • thisRef- bir xil turdagi bo'lishi yoki mulk egasining turidan meros bo'lib o'tishi kerak ( kengaytmalar uchun kengaytirilayotgan tur)

  • property- turi KProperty<*>yoki uning asosiy turi bo'lishi kerak . Ushbu funktsiya xususiyat bilan bir xil qiymatni qaytarishi kerak (yoki uning asosiy turi).

A uchun o'zgaruvchan mulkni ( var ), vakil kerak qo'shimcha bir vazifasi bilan ta'minlash setValuequyidagi parametrlarni qabul qiladi:

  • thisRef- xuddi shunday getValue(),

  • property- xuddi shunday getValue(),

  • yangi qiymat - xususiyat (yoki uning asosiy turi) bilan bir xil bo'lishi kerak.

Funksiyalar getValue()va / yoki setValue()delegatlar sinfining a'zolari sifatida yoki kengaytma sifatida taqdim etilishi mumkin . Ikkinchisi, ushbu funktsiyalarga ega bo'lmagan ob'ektga mulkni topshirish kerak bo'lganda foydalidir. Ushbu ikkala xususiyat ham kalit so'z bilan belgilanishi kerak operator.
Ushbu interfeyslar Kotlin standart kutubxonasida e'lon qilingan:
interface ReadOnlyProperty<in R, out T> {
operator fun getValue(thisRef: R, property: KProperty<*>): T
}

interface ReadWriteProperty<in R, T> {
operator fun getValue(thisRef: R, property: KProperty<*>): T
operator fun setValue(thisRef: R, property: KProperty<*>, value: T)
}
Tarjima qoidalari
Har bir topshirilgan mulk uchun sahna ortidagi Kotlin kompilyatori yordamchi xususiyatni yaratadi va unga vakolat beradi. Masalan, propmulk uchun yashirin xususiyat yaratiladi prop$delegateva getter va setterlarning bajarilishi shunchaki ushbu qo'shimcha xususiyatga beriladi:

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