forEach里面forEach在Kotlin

在Kotlin中,如果要使用forEach的元素,则可以使用it关键字。 所以现在我想知道如果我有一个forEach里面forEach ,我该怎么做:

 list.forEach { val parent = it it.forEach { // `it` now become the element of the parent. } } 

我认为只为命名约定定义一个新的variables是如此愚蠢。 有任何其他的解决方案,这个问题?

it只是所有单参数闭包中的默认参数名称。 你可以自己指定参数名称:

 collection.forEach { customName -> ... } 

除了Artyom上面的正确答案之外,我想说如果你只关心它的内部,你可以简单的忽略名字重载。

看到:

 >> var a = "abc" >> a?.let { it[2]?.let { it } } c 

返回的值是最内在的“它”。 “it”在那里指的是最外面的“it ​​[2]”,即字符串“abc”中的字符“c”。

现在,如果你想访问最外层的“it”,你应该把它命名为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" } } bc 

如果你不需要引用最外层的“它”,我个人更喜欢第一个构造,因为它更加简洁。