Sobes.tech
Junior

Kotlin dilində 'this' açar sözünün istifadəsini izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də this cari sinif nümunəsinə istinad edir. Onun istifadəsi kontekstdən asılıdır:

  1. Sinfin metodunda: this çağırılan metodun hansı nümunəyə aid olduğunu göstərir.

    class MyClass {
        var value: Int = 0
    
        fun setValue(value: Int) {
            // this.value sinifin xüsusiyyətinə daxil olmaq üçün istifadə olunur
            // və value metod parametridir
            this.value = value 
        }
    }
    
  2. Extension funksiyası və ya xüsusiyyəti daxilində: this tətbiq olunan obyektə istinad edir.

    fun String.printLength() {
        // this burada extension funksiyasının çağrıldığı String nümunəsidir
        println("Sətirin uzunluğu: ${this.length}") 
    }
    
    fun main() {
        "Salam".printLength() // "Sətirin uzunluğu: 5" çap edir
    }
    
  3. Receptor ilə funksiyanın literalında: this literalın qəbulçusuna istinad edir.

    fun buildString(builderAction: StringBuilder.() -> Unit): String {
        val sb = StringBuilder()
        // builderAction daxilində, this sb (StringBuilder nümunəsi) istinad edir
        sb.builderAction() 
        return sb.toString()
    }
    
    val myString = buildString {
        // this burada StringBuilder
        append("Salam, ")
        append("Dünya!")
    }
    
  4. Kvalifikasiya olunmuş this (bir neçə qəbulçu varsa): Bu, iç-içə strukturlar və müxtəlif qəbulçular ilə, çoxsaylı kontekstlər arasında qarışıqlığı aradan qaldırmaq üçün istifadə olunur. Sintaksis %label@this, burada %label kontekstlə əlaqəli etiketdir.

    class Outer {
        inner class Inner {
            fun printThis() {
                // this Inner nümunəsinə istinad edir
                println("Inner this: ${this}") 
                // Outer@this Outer nümunəsinə istinad edir
                println("Outer this: ${this@Outer}") 
            }
        }
    
        fun createInner() = Inner()
    }
    
    fun main() {
        Outer().createInner().printThis()
    }
    

Ümumiyyətlə, Kotlin-də this cari kontekstə açıq giriş təmin edir, bu, sinif nümunəsi, extension obyekti və ya funksiya literal qəbulçusu ola bilər, və aydınlığı artırır, ad konfliktlərinin qarşısını alır.