Илҳом диҳед истифодаи калимаи калидии 'this' дар Kotlin.
sobes.tech AI
Ҷавоб аз AI
У Kotlin this адносіцца да бягучага экземпляра класа. Яго выкарыстанне залежыць ад кантэксту:
-
Унутры метада класа:
thisспасылаецца на экземпляр, на якім быў выкліканы метад.class MyClass { var value: Int = 0 fun setValue(value: Int) { // Выкарыстоўваем this.value для доступу да ўласцівасці класа // і value для параметра метада this.value = value } } -
Унутры пашырэння функцыі або ўласцівасці:
thisспасылаецца на аб'ект, да якога прымяняецца пашырэнне.fun String.printLength() { // this тут — экземпляр String, на якім выклікана пашырэнне println("Даўжыня радка: ${this.length}") } fun main() { "Прывет".printLength() // Выведзе "Даўжыня радка: 6" } -
Унутры літэралаў функцый з прыёмнікам (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("Свет!") } -
Для кваліфікаванага
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 забяспечвае ясны доступ да бягучага кантэксту, будь то экземпляр класа, аб'ект пашырэння або прыёмнік літэрала функцыі, што спрыяе яснасці і прадухіляе канфлікты ў імёнах.