Kotlin单线返回类型不匹配

时间:2018-10-30 14:41:12

标签: kotlin

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

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

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

2 个答案:

答案 0 :(得分:0)

即使onSomeListenerEvent已将T指定为返回类型,以下内容也应起作用:

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

如果您想问一下如何保留=分配,那么以下内容也可以工作(但由于第一个较短,并且不需要apply,我会坚持使用首先):

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

但是再说一遍:您当前的解决方案已经足够简单,并且不会采取任何不便的方法。因此,请使用:: Unit或大括号;-)

答案 1 :(得分:0)

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

fun Any?.discardResponse() = Unit

然后:

override fun onSomeListenerEvent(index: Int) = myArrayList.remove(index).discardResponse()