preProcessHandler: (AppException) -> Boolean用法:

18 阅读1分钟

一、使用:

1、调用出

第一种写法:

//预处理函数:
val preProcessHandler: (AppException)->Boolean = { e ->
         if (e.errCode == "1001"){
             //执行特殊操作逻辑
             true
         }else{
             false
         }
}
//获取首页列表
context?.let { mainViewModel.getHomeList(it,preProcessHandler) }

第二种写法:

//获取首页列表
context?.let { mainViewModel.getHomeList(it){ e ->
    if (e.errCode == "1001"){
             //执行特殊操作逻辑
             true
         }else{
             false
         }
} }

2、执行处

fun getHomeList(mContext: Context, preProcessHandler: (AppException) -> Boolean) {
    val map = RequestParameterUtils.getMapData()
    map.put("appCode", "XXX")
    map.put("client","XXX")
    request({ apiService2.getHomeList(map) }, {
        homeData.value = it
        CommonPermissionUtils.setBasePermission(it)
    }, {
        //判断
        var b = preProcessHandler.invoke(it)
        if (!b){
            ToastUtils.showToast(mContext,it.errorMsg?:"")
        }
    }, true)
}

3、它对应 Java 里的哪个函数式接口?

一对一对应:

表格

Kotlin 函数类型Java 函数式接口
() -> UnitRunnable / Consumer 无参无返
() -> TSupplier<T> 无参有返
(A) -> BFunction<A,B> 一参一返
(AppException) -> BooleanPredicate<AppException>
(A) -> UnitConsumer<A>

4、终极总结(一句话)

(AppException) -> Boolean
Kotlin 函数类型
接收一个异常,返回 Boolean
等价 Java 的 Predicate