在Kotlin中,如果您想使用forEach
的元素,则可以使用it
关键字。所以现在我想知道如果我forEach
内有forEach
,我应该怎么做:
list.forEach {
val parent = it
it.forEach {
// `it` now become the element of the parent.
}
}
我认为仅为命名约定定义一个新变量是如此愚蠢。还有其他解决方案吗?
答案 0 :(得分:56)
it
只是所有单个参数闭包内的默认参数名称。您可以自己指定参数名称:
collection.forEach { customName ->
...
}
答案 1 :(得分:3)
除了Artyom上面的正确答案之外,我想说的是,如果你只关心它的内部,你可以简单地忽略名称重载。
请参阅:
>> var a = "abc"
>> a?.let { it[2]?.let { it } }
c
返回的值是最内在的“它”。 “它”,在那里,指的是最外面的“它[2]”,即字符串“abc”中的字符“c”。
现在,如果你想访问最外面的“它”,你应该把它命名为Artyom所说的其他东西。下面的代码等同于上面的代码,但它允许您从最里面的'let'块中的外部'let'块引用“outerIt”,如果这是你需要的。
>> var a = "abc"
>> a?.let { outerIt -> outerIt[2]?.let { it } }
c
这样,如果你需要引用它的最外层,你可以。例如:
>> var a = "abc"
>> a?.let { outerIt -> outerIt[2]?.let { "${outerIt[1]} $it" } }
b c
如果你不需要参考最外面的“它”,我个人更喜欢第一个结构,因为它更简洁。