Kotlin扩展功能

joh*_*crq 2 android kotlin extension-function

考虑到这一点:

MyView.setVisibility(View.VISIBLE)
Run Code Online (Sandbox Code Playgroud)

可简化为:

inline fun View.setVisible() = apply { visibility = View.VISIBLE }

MyView.setVisible()
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以这样:

inline infix fun View.vis(vis: Int) = apply { visibility = vis }
MyView vis View.VISIBLE
Run Code Online (Sandbox Code Playgroud)

无论如何通过这样做完成相同的事情:

MyView.VISIBLE
Run Code Online (Sandbox Code Playgroud)

mfu*_*n26 5

"getter"修改状态似乎有点奇怪但你可以使用扩展属性:

val View.VISIBLE: Unit
    get() {
        visibility = View.VISIBLE
    }
Run Code Online (Sandbox Code Playgroud)

您还可以使其返回新的可见性值或返回自身,以便您可以链接调用.

val View.VISIBLE: Int
    get() {
        visibility = View.VISIBLE
        return visibility
    }
Run Code Online (Sandbox Code Playgroud)

要么

val View.VISIBLE: View
    get() = apply { visibility = View.VISIBLE }
Run Code Online (Sandbox Code Playgroud)