如何在 Kotlin android 的扩展函数中访问具有相同名称的 class 成员

How to access class members with same name in extension function in Kotlin android

我是 android 的 kotlin 新手。我想访问 class 在扩展函数中具有相同名称的成员。 例如:

   var visibility = null //class level variable

    //EXTENSION FUNCTION
    fun ProgressBar.changeVisibleState(flag: Boolean) {
        if (flag)
            visibility = View.VISIBLE
        else
            visibility = View.INVISIBLE
    }

如何在 changeVisibleState 方法中访问 visibility

您可以使用 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
    }
}

使用 qualified this this@Hello 您可以访问 Hello 的 属性 而不是 ProgressBar 的。

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
    }
}