Xüsusiyyətlərdəki get və set metodlarını yenidən təyin etmək ilə nümayəndəlik xüsusiyyətlərinin istifadəsi arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də vəzifələrə və get və set metodlarının üst-üstə qoyulmasına iki yol var: bunlar müxtəlif məqsədlər və mexanizmlərdir.
Vəzifə vəzifələri vəzifənin alınması və təyin olunması məntiqini ayrıca vəzifə nümayəndəsinə köçürməyə imkan verir. Sadəcə olaraq, vəzifənin bu obyektə vəzifə verildiyini göstərirsiniz və onunla bütün əməliyyatlar ora yönəldiləcək.
Delegasiya nümunəsi:
class Example {
var p: String by Delegate()
}
class Delegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "Delegatdan alınan dəyər"
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("Dəyər təyin edilir: $value")
}
}
get və set metodlarının üst-üstə qoyulması bu vəzifəyə birbaşa sinif daxilində giriş davranışını müəyyən etmək üçün bir yoldur və xarici delegat istifadə edilmir.
Üst-üstə qoyma nümunəsi:
class Example {
var p: String = ""
get() = field.toUpperCase()
set(value) {
field = value.trim()
}
}
Fərqlər:
- Delegasiya vəzifəyə giriş məntiqini müxtəlif yerlərdə təkrar istifadə etməyə imkan verir və onu sinfdən ayırır.
get/set-in üst-üstə qoyulması, müəyyən vəzifənin davranışını yerli olaraq konfiqurasiya edir.- Delegatlar vəziyyəti saxlaya bilər və mürəkkəb məntiqi yerinə yetirə bilər, məsələn, tənbəl başlanğıc, dəyişikliklərin izlənməsi və s.
Beləliklə, vəzifə delegate-lər daha çevik və modul vasitədir, get/set-in üst-üstə qoyulması isə vəzifənin davranışını sinif daxilində fərdiləşdirməyin sadə yoludur.