Selgitage võtmesõna 'this' kasutamist Kotlinis.
sobes.tech AI
Vastus AI-lt
Kotlinis this viitab praegusele klassi eksemplarile. Selle kasutus sõltub kontekstist:
-
Klassi meetodi sees:
thisviitab eksemplarile, millelt meetod kutsuti.class MyClass { var value: Int = 0 fun setValue(value: Int) { // Kasutame this.value, et pääseda ligi klassi omadusele // ja value meetodi parameetrile this.value = value } } -
Laienduse funktsiooni või omaduse sees:
thisviitab objekti, millele laiendus rakendub.fun String.printLength() { // this siin on String eksemplar, millel laiendusfunktsioon on kutsutud println("Rida pikkus: ${this.length}") } fun main() { "Tere".printLength() // Väljund: "Rida pikkus: 4" } -
Väärtuste (receiver) funktsioonide kirjeldustes:
thisviitab vastuvõtjale.fun buildString(builderAction: StringBuilder.() -> Unit): String { val sb = StringBuilder() // builderAction sees, this viitab sb-le (StringBuilder eksemplar) sb.builderAction() return sb.toString() } val myString = buildString { // this siin on StringBuilder append("Tere, ") append("Maailm!") } -
Kvalifitseeritud
this(kui on mitu vastuvõtjat): Kasutatakse ebamäärasuse kõrvaldamiseks, kui on sisemisi struktuure erinevate vastuvõtjatega (näiteks sisemised klassid, funktsiooni kirjeldused vastuvõtjaga). Süntaks%label@this, kus%labelon kontekstiga seotud märge.class Outer { inner class Inner { fun printThis() { // this viitab Inner eksemplarile println("Inner this: ${this}") // Outer@this viitab Outer eksemplarile println("Outer this: ${this@Outer}") } } fun createInner() = Inner() } fun main() { Outer().createInner().printThis() }
Üldiselt võimaldab this Kotlinis selgelt viidata praegusele kontekstile, olgu selleks klassi eksemplar, laiendusobjekt või funktsiooni vastuvõtja, parandades selguse ning vältides nimede konflikte.