Как получить доступ к ученикам с одинаковыми именами в функции расширения в 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
    }
}
Другие вопросы по тегам