Как получить доступ к ученикам с одинаковыми именами в функции расширения в Kotlin Android
Я новичок в Kotlin для Android. и я хочу получить доступ к члену класса с тем же именем в функции расширения. например:
var visibility = null //class level variable
//EXTENSION FUNCTION
fun ProgressBar.changeVisibleState(flag: Boolean) {
if (flag)
visibility = View.VISIBLE
else
visibility = View.INVISIBLE
}
как я могу получить доступ visibility
в changeVisibleState
метод.
2 ответа
Решение
С квалифицированным этим this@Hello
вы можете получить доступ Hello
собственность вместо ProgressBar
"S.
class Bye {
var visibility: Int = 0 //class level variable
}
class Hello {
var visibility: Int = 0 //class level variable
fun Bye.changeVisibleState(flag: Boolean) {
//access Bye's prop
visibility = if (flag) 1 else 2
//access Hello's prop
this@Hello.visibility = 12
}
}
Ты можешь использовать this
оператор.
class Hello {
var visibility: Int = 0 //class level variable
//EXTENSION FUNCTION
fun ProgressBar.changeVisibleState(flag: Boolean) {
if (flag)
this@Hello.visibility = View.VISIBLE
else
this@Hello.visibility = View.INVISIBLE
}
}