所以我有一个简单的回调类:
class Callback<T>(
val onResponse: (T) -> Unit,
val onError:(Throwable)->Unit
)
现在我想实现一个处理错误的方法。可能有也可能没有callback需要调用的。
private fun handleServerError(error:IServerError, callback:Callback<*>? = null){
val reason = error.cause
when(reason){
is Because.ServerRejectsLogin -> {
doAsync { uiThread { mainActivity.longToast("sorry, your session timed out. please log in again.") } }
IntentManager.doLogin(mainActivity)
}
else -> callback?.onError(reason)
}
}
这给我一个错误:
引用具有可空类型,
((Throwable) -> Unit)?使用显式?.invoke()进行类似函数的调用,而不是
它似乎期待的是
else -> callback?.onError?.invoke(reason)
我不太明白为什么。不为空的事实callback是否足以推导出必须有一个非空onError函数?
雪上加霜,如果我写
else -> callback?.let{it.onError(reason)}
然后它接受了,但不是在警告我我应该
删除多余的
.let调用