Intellij idea 封闭lambda的隐式参数为阴影 val listPlans:List=newPlans.mapTry{ it.data.map{ 计划(it.id、it.name、it.phone、it.desc、it.email) }托利斯先生() }

Intellij idea 封闭lambda的隐式参数为阴影 val listPlans:List=newPlans.mapTry{ it.data.map{ 计划(it.id、it.name、it.phone、it.desc、it.email) }托利斯先生() },intellij-idea,kotlin,lambda,Intellij Idea,Kotlin,Lambda,Kotlin newbie编写代码和IntelliJ在计划中高亮显示它(it.id、it.name、it.phone、it.desc、it.email),并表示封闭lambda的隐式参数被隐藏 可以保持原样吗?如果没有,我可以用什么替换它?您有嵌套的lambda,因此“it”将表示最内层lambda的隐式参数。此警告主要用于可读性目的,并避免混淆,因为随着嵌套的lambda越多,“it”的含义就越不清楚。我建议您为嵌套lambda显式指定lambda参数: val listPlans: List

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


可以保持原样吗?如果没有,我可以用什么替换它?

您有嵌套的lambda,因此“it”将表示最内层lambda的隐式参数。此警告主要用于可读性目的,并避免混淆,因为随着嵌套的lambda越多,“it”的含义就越不清楚。我建议您为嵌套lambda显式指定lambda参数:

val listPlans: List<Plan> = newPlans.mapTry {
            it.data.map {
                Plan(it.id, it.name, it.phone, it.desc, it.email)
            }.toList()
        }
val listPlans:List=newPlans.mapTry{plan->
plan.data.map{
计划(it.id、it.name、it.phone、it.desc、it.email)
}托利斯先生()
}

val listPlans:List=newPlans.mapTry{
it.data.map{planData->
计划(planData.id、planData.name、planData.phone、planData.desc、planData.email)
}托利斯先生()
}
或两者兼而有之:

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=newPlans.mapTry{plan->
plan.data.map{planData->
计划(planData.id、planData.name、planData.phone、planData.desc、planData.email)
}托利斯先生()
}

值得指出的是,这是kotlinlang链接有趣的原因之一,大部分讨论是在5年前,Kotlin 1.0发布之前;JetBrains似乎不太可能认真考虑过删除它,现在他们几乎肯定不会这么做。
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()
    }