我在用Kotlin编写的一段代码中使用了一个匿名对象。可以将重写的方法压缩为单行代码,因为它是一行代码,但是单行方法调用实际上返回类型为T
的值。
override onSomeListenerEvent(index: Int): Unit = myArrayList.remove(index)
保持单线的最佳方法是什么?
答案 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()