Sobes.tech
Junior

Kotlin tilida 'this' so'zining ishlatilishini tushuntiring.

sobes.tech AI

AIdan javob

Kotlin'da this hozirgi sinf nusxasiga ishora qiladi. Uning ishlatilishi kontekstga bog‘liq:

  1. Sinf metodida ichida: this chaqirilgan metod bo‘lsa, unga taalluqlidir.

    class MyClass {
        var value: Int = 0
    
        fun setValue(value: Int) {
            // this.value bilan sinf xususiyatiga kirish
            // va value parametr uchun
            this.value = value 
        }
    }
    
  2. Extension funksiyasi yoki xususiyatida: this extension qo‘llaniladigan obyekti anglatadi.

    fun String.printLength() {
        // this bu yerda extension funksiyasining chaqirilgan String nusxasi
        println("Qator uzunligi: ${this.length}") 
    }
    
    fun main() {
        "Salom".printLength() // "Qator uzunligi: 5" chiqaradi
    }
    
  3. Receptor bilan funksiya literal ichida: this receptorga ishora qiladi.

    fun buildString(builderAction: StringBuilder.() -> Unit): String {
        val sb = StringBuilder()
        // builderAction ichida, this sb (StringBuilder nusxasi) ga ishora qiladi
        sb.builderAction() 
        return sb.toString()
    }
    
    val myString = buildString {
        // this bu yerda StringBuilder
        append("Salom, ")
        append("Dunyo!")
    }
    
  4. Kvalifikatsiyalangan this (bir nechta receptor bo‘lsa): Bu, ichma-ich tuzilmalar va turli receptorlar bilan bo‘lsa, noaniqlikni bartaraf etish uchun ishlatiladi. Sintaksis %label@this, bu yerda %label kontekst bilan bog‘langan belgi.

    class Outer {
        inner class Inner {
            fun printThis() {
                // this Inner nusxasiga ishora qiladi
                println("Inner this: ${this}") 
                // Outer@this Outer nusxasiga ishora qiladi
                println("Outer this: ${this@Outer}") 
            }
        }
    
        fun createInner() = Inner()
    }
    
    fun main() {
        Outer().createInner().printThis()
    }
    

Umuman olganda, Kotlin'da this joriy kontekstga aniq kirishni ta'minlaydi, bu sinf nusxasi, kengaytma obyekti yoki funksiya literalining qabul qiluvchisi bo‘lishi mumkin, va aniqlikni oshiradi hamda nomlar to‘qnashuvlarini oldini oladi.