val listPlans: List<Plan> = newPlans.mapTry {
            it.data.map {
                Plan(it.id, it.name, it.phone, it.desc, it.email)
            }.toList()
        }

Kotlin newbie正在编写代码,IntelliJ在Plan(it.id, it.name, it.phone, it.desc, it.email)中高亮显示,并表示封闭lambda的隐式参数被隐藏.

Is it ok to leave this as it is? If not, what can I replace it with?

推荐答案

您嵌套了lambdas,因此"it"将表示最里面的lambda的隐式参数.此警告主要是出于可读性和避免使用念力的目的,因为"it"的含义随着嵌套的lambdas越多而变得越不清楚.我建议您为嵌套的lambdas显式指定lambda参数:

val listPlans: List<Plan> = newPlans.mapTry { plan ->
        plan.data.map {
            Plan(it.id, it.name, it.phone, it.desc, it.email)
        }.toList()
    }

or

val listPlans: List<Plan> = newPlans.mapTry {
        it.data.map { planData ->
            Plan(planData.id, planData.name, planData.phone, planData.desc, planData.email)
        }.toList()
    }

或者两者兼而有之:

    val listPlans: List<Plan> = newPlans.mapTry { plan ->
        plan.data.map { planData ->
            Plan(planData.id, planData.name, planData.phone, planData.desc, planData.email)
        }.toList()
    }

It is worth to point out that this is one of the reasons why JetBrains team is planning to remove "it" functionality

Kotlin相关问答推荐

Kotlin Coroutine()是如何工作的?S阻止了.

为什么 Kotlin main 函数需要 @JVMStatic 注解?

如何从 Period.between() 返回的字符串中提取信息? (Kotlin )

为什么 Kotlin 中的 Double 和 Long 类型不推荐直接转换为 Char?

Kotlin 具体类从抽象类和接口扩展而来,接口使用抽象类中实现的方法

Fragment的onDestroy()中是否需要将ViewBinding设置为null?

Gradle 同步失败:不支持的方法:KotlinPlatformContainer.supports()

为什么我在使用 Jetpack Compose clickable-Modifier 时收到后端内部错误:Exception during IR lowering error?

Kotlin中的下划线名称是为什么保留的?

Kotlin:子构造函数如何使用其父构造函数的辅助构造函数?

Kotlin 扩展函数 - 覆盖现有方法

任何处理器都无法识别以下选项:'[kapt.kotlin.generated, room.incremental]'

如何在使用Koin DI的活动之间共享同一个ViewModel实例?

如何序列化/反序列化Kotlin密封类?

如何在 Gradle Kotlin DSL 中使用来自 gradle.properties 的插件版本?

Kotlin内联属性的用例是什么?

你如何在 Kotlin 中注释 Pair 参数?

用 kotlin 学习 Android MVVM 架构组件

Kotlin中的嵌套let块

Kotlin:如何使用扩展函数扩展枚举类