Xüsusiyyət nümayəndələrinin xüsusiyyəti nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də mülkiyyət delegatları, mülkiyyətin alınması və təyin olunması məntiqini köməkçi sinfə — delegat — köçürməyə imkan verir.
Xüsusiyyətlər:
-
getValuevəsetValue-nin Anlaşılması: Oxumağa əlverişli (val) mülkiyyətlər üçün delegatgetValuemetoduna malik olmalıdır. Oxuma və yazma üçün əlverişli (var) mülkiyyətlər üçün isə, delegat həmgetValue, həm dəsetValuemetodlarına sahib olmalıdır. Bu metodlar aşağıdakı parametrləri qəbul edir:- Mülkiyyəti ehtiva edən obyektə istinad (sinif üzvləri üçün).
KPropertyobyektində mülkiyyətin meta məlumatları.
-
Standart delegatlar: Kotlin bir sıra standart delegatlarla təchiz olunmuşdur:
lazy: Mülkiyyətin təxirə salınmış başlanğıcı üçün.observable: Mülkiyyət dəyəri dəyişdikdə müəyyən bir əməliyyat yerinə yetirmək üçün.vetoable: Mülkiyyət dəyəri dəyişdikdə əməliyyat yerinə yetirmək və dəyişiklikləri ləğv etmək imkanı ilə.- Xəritələr üçün delegatlar: Mülkiyyət
Map-də saxlanıla bilər.
-
İstənilən delegatlar: Öz sinflərinizi yarada bilərsiniz. Sinif
ReadOnlyProperty(valüçün) və yaReadWriteProperty(varüçün) interfeysini həyata keçirməlidir.
lazy-dən istifadə nümunəsi:
// Sahə ilk girişdə yalnızca başlanır
val lazyValue: String by lazy {
println("Dəyəri hesablayıram")
"Hello"
}
observable-dən istifadə nümunəsi:
import kotlin.properties.Delegates
var name: String by Delegates.observable("<ad yoxdur>") {
property, oldValue, newValue ->
println("$oldValue -> $newValue")
}
Xüsusi delegat nümunəsi:
import kotlin.reflect.KProperty
class Delegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "$thisRef, mülkiyyət '${property.name}' dəyəri"
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("$thisRef, '${property.name}' mülkiyyətinin dəyəri '$value' olaraq dəyişdirildi")
}
}
class Example {
var p: String by Delegate()
}