val listPlans: List<Plan> = newPlans.mapTry {
it.data.map {
Plan(it.id, it.name, it.phone, it.desc, it.email)
}.toList()
}
Kotlin新手编写代码,而IntelliJ在Plan(it.id, it.name, it.phone, it.desc, it.email)
中突出显示该代码,并说封闭lambda的隐式参数被遮盖。
可以保留原样吗?如果没有,我可以用什么代替它?
答案 0 :(得分:3)
您已经嵌套了lambda,因此“ it”将表示最里面的lambda的隐式参数。此警告主要是出于可读性目的,并且避免了混淆,因为随着嵌套更多的lambda,“ it”的含义变得越来越不清楚。我建议您为嵌套lambda明确指定lambda参数:
val listPlans: List<Plan> = newPlans.mapTry { plan ->
plan.data.map {
Plan(it.id, it.name, it.phone, it.desc, it.email)
}.toList()
}
或
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()
}
值得指出的是,这是JetBrains team is planning to remove "it" functionality
的原因之一