Sobes.tech
Junior

Kotlin тилинде 'this' ачкыч сөзүнүн колдонулушун түшүндүрүңүз.

sobes.tech AI

AIден жооп

Котлинде this учурдагы класс мисалына тиешелүү. Анын колдонулушу контекстке жараша:

  1. Класс методуунун ичинде: this чакырылган методду колдонуп жаткан мисалга шилтеме кылат.

    class MyClass {
        var value: Int = 0
    
        fun setValue(value: Int) {
            // this.value класстын мүчөсүнө жетүү үчүн колдонулат
            // жана value методуна келген параметр
            this.value = value 
        }
    }
    
  2. Кеңейтүү функциясы же мүчө мүнөздөмөсүнүн ичинде: this кеңейтүү колдонулуп жаткан обьекске шилтеме кылат.

    fun String.printLength() {
        // this — кеңейтүү функциясы колдонулуп жаткан String мисалы
        println("Жолдун узундугу: ${this.length}") 
    }
    
    fun main() {
        "Салам".printLength() // "Жолдун узундугу: 5" чыгат
    }
    
  3. Кабыл алуучу (receiver) менен функциянын литералдарында: this кабыл алуучу объектке шилтеме кылат.

    fun buildString(builderAction: StringBuilder.() -> Unit): String {
        val sb = StringBuilder()
        // builderAction ичинде this — StringBuilder мисалы
        sb.builderAction() 
        return sb.toString()
    }
    
    val myString = buildString {
        // this — StringBuilder
        append("Салам, ")
        append("Дүйнө!")
    }
    
  4. Квалификацияланган this (эки кабыл алуучу болсо): Ички структураларда ар башка кабыл алуучулар менен карама-каршылыкты жоюу үчүн колдонулат (мисалы, ички класс, кабыл алуучу менен функция литералдары). Синтаксис %label@this, анда %label — контекстке байланышкан белгилөө.

    class Outer {
        inner class Inner {
            fun printThis() {
                // this — Inner мисалына шилтеме
                println("Inner this: ${this}") 
                // Outer@this — Outer мисалына шилтеме
                println("Outer this: ${this@Outer}") 
            }
        }
    
        fun createInner() = Inner()
    }
    
    fun main() {
        Outer().createInner().printThis()
    }
    

Жалпысынан, this Kotlinдо учурдагы контекстке — класс мисалына, кеңейтүү объектисине же функция кабыл алуучу объектке — ачык жетүүнү камсыз кылат, бул аныктыкты жогорулатат жана аталыштардын кагылышуусун алдын алат.