Итак, у меня есть простой класс обратного вызова:
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)
}
}
Это приводит меня к ошибке:
Ссылка имеет тип Nullable ((Throwable) -> Unit)?
использовать явный?.invoke()
для вызова функции, вместо этого
Кажется, что это
else -> callback?.onError?.invoke(reason)
, и я не совсем понимаю, почему.Разве тот факт, что callback
не является нулевым, достаточен для того, чтобы определить, что должна быть ненулевая onError
функция?
Чтобы добавить оскорбление к травме, если я напишу
else -> callback?.let{it.onError(reason)}
тогда он принимает это, но не раньше, чем предупреждает меня, что я должен
удалить избыточный .let
вызов