1

我在用 Kotlin 编写的一段代码中使用了一个匿名对象。被覆盖的方法可以被压缩成单行代码,因为它是一行代码,但是单行方法调用实际上返回了一个 type 的值T

override onSomeListenerEvent(index: Int): Unit = myArrayList.remove(index)

保持单线的最佳方法是什么?

4

2 回答 2

1

您可以创建一个扩展来将任何类型更改为单位:

fun Any?.discardResponse() = Unit

然后:

override fun onSomeListenerEvent(index: Int) = myArrayList.remove(index).discardResponse()
于 2018-10-30T14:49:41.283 回答
0

以下应该可以工作,即使onSomeListenerEvent已指定T为返回类型:

override fun onSomeListenerEvent(index: Int) { myArrayList.remove(index) }

如果您想问如何保持您的=-assignment,那么以下内容也可以使用(但因为第一个更短并且不需要apply我会坚持第一个):

override fun onSomeListenerEvent(index: Int) = Unit.apply { myArrayList.remove(index) }

但话又说回来:您当前的解决方案已经足够简单,并且不会采取任何不方便的路线。所以要么使用:: Unit或大括号;-)

于 2018-10-30T14:42:33.837 回答