for foreach kotlin

forEach inside forEach in Kotlin



for kotlin (2)

Además de la respuesta correcta de Artyom, me gustaría decir que si solo te importa el interior, simplemente puedes ignorar la sobrecarga de nombres.

Ver:

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

El valor devuelto es el más "interno". "it", allí, se refiere al "it [2]" más externo, es decir, el carácter ''c'' de la cadena "abc".

Ahora, si desea acceder al "it" más externo, debe nombrarlo de otra manera como lo dice Artyom. El código a continuación es equivalente al código anterior, pero le permite referirse a "outerIt" desde el bloque ''let'' externo en el bloque ''let'' más interno, si eso es lo que necesita.

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

De esta manera, si necesita referirse a lo más externo, puede hacerlo. Por ejemplo:

>> var a = "abc" >> a?.let { outerIt -> outerIt[2]?.let { "${outerIt[1]} $it" } } b c

Si no necesita referirse al "it" más externo, personalmente prefiero la primera construcción porque es terser.

En Kotlin, si desea usar el elemento de forEach , puede usar la palabra clave it . Así que ahora me pregunto qué debo hacer si tengo un forEach adentro forEach así:

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

Creo que eso define una nueva variable solo para que la convención de nombres sea tan estúpida. ¿Tiene alguna otra solución para este problema?


es solo un nombre de parámetro predeterminado dentro de todos los cierres de argumentos únicos. Podrías especificar el nombre del parámetro por ti mismo:

collection.forEach { customName -> ... }