Junior
როგორ მუშაობენ საკვანძო სიტყვები 'super' და 'this' Kotlin-ში?
sobes.tech AI
პასუხი AI-სგან
this учурдагы класстын мисалына же лямбда-экспрессиянын кабыл алуучусуна шилтеме кылат. Бул класс мүчөсүн так көрсөтүү же учурдагы объектке шилтеме берүү үчүн колдонулат, мисалы, бир эле аталыштагы жергиликтүү өзгөрмө болсо (айырмаландыруу үчүн).
super — ата-эне классынан методдорду чакыруу же мүлктөргө жетүү үчүн колдонулат. Бул учурда, ата-эне классындагы ишке ашырылышты колдонуу керек болгондо колдонулат.
Мисалдар:
class MyClass(val value: Int) {
fun printValue() {
println(this.value) // this колдонуу менен мүчөгө кирүү
}
}
open class Parent {
open fun greet() {
println("Ата-эненин саламы")
}
}
class Child : Parent() {
override fun greet() {
super.greet() // ата-эне класс методун чакыруу
println("Уулу салам")
}
}
Лямбда функцияларда, this кабыл алуучуга шилтеме кылышы мүмкүн:
fun String.addExclamation(): String {
return this + "!" // this кабыл алуучу строкага шилтеме кылат
}
fun main() {
val numbers = listOf(1, 2, 3)
val sum = numbers.sum() // sum — кеңейтүү функциясы, this списокке шилтеме кылат
println(sum)
}
Аралаштыкты чечүү үчүн, эгерде ички класс же кабыл алуучу лямбда бар болсо, квалификацияланган this колдонсо болот (мисалы, this@ClassName же this@label).
class A { // көрүнбөгөн label @A
inner class B { // көрүнбөгөн label @B
fun Int.foo() { // көрүнбөгөн label @foo
val a = this@A // A экземплярга шилтеме
val b = this@B // B экземплярга шилтеме
val c = this // Int экземплярга шилтеме, ал функциянын кабыл алуучусу
val c1 = this@foo // Int экземплярга шилтеме, ал функциянын кабыл алуучусу
}
}
}