Junior
Kotlin-də 'super' və 'this' açar sözləri necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
this cari sinifin və ya lambda ifadəsinin qəbulçusuna istinad edir. Bu, sinif üzvünü və ya hazırki obyektə istinad etmək üçün istifadə olunur, xüsusən də çoxmənalı vəziyyətlərdə (məsələn, eyni adlı yerli dəyişən olduqda).
super valideyn sinifin metodlarını çağırmaq və ya xüsusiyyətlərinə daxil olmaq üçün istifadə olunur. Bu, hazırki sinifdə yenidən yazılmış implementasiya yerinə valideyn sinifin implementasiyasını istifadə etmək istədiyiniz zaman tətbiq edilir.
Misallar:
class MyClass(val value: Int) {
fun printValue() {
println(this.value) // this istifadə edərək xüsusiyyətə əlçatanlıq
}
}
open class Parent {
open fun greet() {
println("Valideyndən salam")
}
}
class Child : Parent() {
override fun greet() {
super.greet() // valideyn sinifin metodunu çağırmaq
println("Uşaqdan salam")
}
}
Lambda funksiyalarında, this qəbulçunun referansına çevrilə bilər:
fun String.addExclamation(): String {
return this + "!" // this qəbulçunun string olduğunu göstərir
}
fun main() {
val numbers = listOf(1, 2, 3)
val sum = numbers.sum() // sum genişləndirmə funksiyasıdır, this burada listə istinad edir
println(sum)
}
Qarışıqlığı həll etmək üçün, iç-içə siniflər və ya qəbulçuları olan lambda'lar üçün, keyfiyyətli this istifadə edə bilərsiniz (this@ClassName və ya this@label):
class A { // qeyri-adi etiket @A
inner class B { // qeyri-adi etiket @B
fun Int.foo() { // qeyri-adi etiket @foo
val a = this@A // A nümunəsinə istinad
val b = this@B // B nümunəsinə istinad
val c = this // Int nümunəsinə, `foo` funksiyasının qəbulçusuna
val c1 = this@foo // Int nümunəsinə, `foo` funksiyasının qəbulçusuna
}
}
}