我在用 Kotlin 编写的一段代码中使用了一个匿名对象。被覆盖的方法可以被压缩成单行代码,因为它是一行代码,但是单行方法调用实际上返回了一个 type 的值T。
override onSomeListenerEvent(index: Int): Unit = myArrayList.remove(index)
保持单线的最佳方法是什么?
我在用 Kotlin 编写的一段代码中使用了一个匿名对象。被覆盖的方法可以被压缩成单行代码,因为它是一行代码,但是单行方法调用实际上返回了一个 type 的值T。
override onSomeListenerEvent(index: Int): Unit = myArrayList.remove(index)
保持单线的最佳方法是什么?
您可以创建一个扩展来将任何类型更改为单位:
fun Any?.discardResponse() = Unit
然后:
override fun onSomeListenerEvent(index: Int) = myArrayList.remove(index).discardResponse()
以下应该可以工作,即使onSomeListenerEvent已指定T为返回类型:
override fun onSomeListenerEvent(index: Int) { myArrayList.remove(index) }
如果您想问如何保持您的=-assignment,那么以下内容也可以使用(但因为第一个更短并且不需要apply我会坚持第一个):
override fun onSomeListenerEvent(index: Int) = Unit.apply { myArrayList.remove(index) }
但话又说回来:您当前的解决方案已经足够简单,并且不会采取任何不方便的路线。所以要么使用:: Unit或大括号;-)