Sobes.tech
Junior

Ներկայացրեք 'this' բանալի բառի օգտագործումը Kotlin-ում։

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() // Տպում է "Տողի երկարությունը: 4"
    }
    
  3. Լիտերալ ֆունկցիաների ներսում՝ ընդունող (receiver): this հղում է ընդունողին:

    fun buildString(builderAction: StringBuilder.() -> Unit): String {
        val sb = StringBuilder()
        // ներսում builderAction, this հղում է sb-ին (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 Կոտլինում տրամադրում է հստակ հասանելիություն ընթացիկ կոնտեքստին՝ լինի դա դասի օրինակ, ընդլայնման օբյեկտ կամ ֆունկցիայի ընդունող, ինչը նպաստում է հստակությանը և խուսափում է անվանման կոնֆլիկտներից։