Kotlin扩展功能
考虑到这一点:
MyView.setVisibility(View.VISIBLE)
可以简化为:
inline fun View.setVisible() = apply { visibility = View.VISIBLE } MyView.setVisible()
或者,如果你喜欢:
inline infix fun View.vis(vis: Int) = apply { visibility = vis } MyView vis View.VISIBLE
有没有这样做的完成相同:
MyView.VISIBLE
对于“getter”来修改状态似乎有些奇怪,但是您可以使用扩展属性 :
val View.VISIBLE: Unit get() { visibility = View.VISIBLE }
而且您还可以使其返回新的可视性值或返回自己,以便您可以链接调用。
val View.VISIBLE: Int get() { visibility = View.VISIBLE return visibility }
要么
val View.VISIBLE: View get() = apply { visibility = View.VISIBLE }
是的,你可以用这样一个getter写一个扩展属性属性:
val View.visible: View get() = apply { visibility = View.VISIBLE }
用法:
myView.visible
但是,请记住,在getter中带有副作用的属性通常是不鼓励的(另请参阅: 函数与属性 ),这种行为对于属性来说相当混乱。