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中带有副作用的属性通常是不鼓励的(另请参阅: 函数与属性 ),这种行为对于属性来说相当混乱。