所以我有一个简单的回调类:
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
调用