Explicați utilizarea cuvântului cheie 'this' în Kotlin.
sobes.tech AI
Răspuns de la AI
În Kotlin, this se referă la instanța curentă a clasei. Utilizarea sa depinde de context:
-
În interiorul unei metode de clasă:
thisface referire la instanța pe care a fost apelată metoda.class MyClass { var value: Int = 0 fun setValue(value: Int) { // Folosim this.value pentru a accesa proprietatea clasei // și value pentru parametrul metodei this.value = value } } -
În interiorul unei funcții sau proprietăți de extensie:
thisface referire la obiectul asupra căruia se aplică extensia.fun String.printLength() { // this aici este instanța String pe care s-a apelat funcția de extensie println("Lungimea șirului: ${this.length}") } fun main() { "Salut".printLength() // Va afișa "Lungimea șirului: 5" } -
În interiorul literale de funcții cu receptor:
thisface referire la receptorul literalei.fun buildString(builderAction: StringBuilder.() -> Unit): String { val sb = StringBuilder() // În interiorul builderAction, this face referire la sb (instanța StringBuilder) sb.builderAction() return sb.toString() } val myString = buildString { // this aici este StringBuilder append("Salut, ") append("Lume!") } -
Pentru
thiscalificat (când există mai mulți receptori): Se folosește pentru a elimina ambiguitatea atunci când există structuri imbricate cu receptori diferiți (de exemplu, clase imbricate, literale de funcții cu receptor). Sintaxa este%label@this, unde%labeleste o etichetă asociată cu contextul.class Outer { inner class Inner { fun printThis() { // this face referire la instanța Inner println("Inner this: ${this}") // Outer@this face referire la instanța Outer println("Outer this: ${this@Outer}") } } fun createInner() = Inner() } fun main() { Outer().createInner().printThis() }
În general, this în Kotlin oferă acces explicit la contextul curent, fie că este o instanță de clasă, un obiect de extensie sau un receptor de funcție literal, contribuind la claritate și evitând conflictele de nume.