Kotlin proqramlaşdırma dilində genişləndirmələr nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də genişləndirmələr mövcud siniflərə yeni funksiyalar və ya xüsusiyyətlər əlavə etməyə imkan verir; irs alma və ya dekoratorlardan istifadə etmədən.
Əsas anlayışlar:
-
Genişləndirmə funksiyaları: Siniflərə yeni metodlar əlavə edir.
// Genişləndirmə funksiyasının təyini fun String.removeWhitespaces(): String { return this.filter { it.isWhitespace().not() } } // Genişləndirmə funksiyasından istifadə val myString = " Hello World " val cleanedString = myString.removeWhitespaces() // cleanedString "HelloWorld" olacaqGenişləndirmə funksiyasındakı
thisaçar sözü, genişləndirmənin çağırıldığı obyektə istinad edir (yuxarıdakı nümunədəmyString). -
Genişləndirmə xüsusiyyətləri: Siniflərə yeni xüsusiyyətlər əlavə etməyə imkan verir, lakin mövcud vəziyyətə malik ola bilməzlər, yəni məlumat saxlaya bilməzlər. Hər girişdə hesablanır.
// Genişləndirmə xüsusiyyətinin təyini val <T> List<T>.lastIndex: Int get() = size - 1 // Genişləndirmə xüsusiyyətindən istifadə val myList = listOf(1, 2, 3) val indexLast = myList.lastIndex // 2Genişləndirmə xüsusiyyətləri getterə malik olmalıdır. Setter seçimi olmalıdır.
Xüsusiyyətlər:
-
Statik yönləndirmə: Genişləndirmənin çağırışı, obyektin işləmə vaxtındakı tipi deyil, dəyişənin tipinə əsaslanır. Bu, obyekt yönümlü proqramlaşdırmadakı virtual metodlardan fərqlidir.
open class Parent class Child : Parent() fun Parent.printType() = println("Parent") fun Child.printType() = println("Child") val p: Parent = Child() p.printType() // "Parent" çap edir, çünki dəyişənin tipi Parent-dir -
Özəl və protected üzvlər: Genişləndirmələr, genişləndirilən sinfin özəl və ya protected üzvlərinə daxil ola bilməz.
-
Companion obyekt genişləndirmələri: Sinifin companion obyektlərini genişləndirmək mümkündür.
class MyClass { companion object { fun create() = MyClass() } } fun MyClass.Companion.printName() = println("MyClass Companion") MyClass.printName() // "MyClass Companion" çap edir -
Görünürlük (Visibility): Genişləndirmələr, başqa fayllarda istifadə üçün faylda elan edilməli və idxal edilməlidir.
Genişləndirmələr, oxumaq və çevik kod yaratmaq üçün güclü vasitədir; üçüncü tərəf kitabxanalarının siniflərinə funksionallıq əlavə etməyə imkan verir, onların mənbə kodunu dəyişdirmədən.