web-dev-qa-db-fra.com

Quel est le "ça" dans le corps de Kotlin lambda?

Par exemple dans ces deux codes suivants:

File("./file1.txt").forEachLine { println(it) }

et

File("somefile.txt").bufferedWriter().use { out ->
    history.forEach {
        out.write("${it.key}, ${it.value}\n")
    }
}

Dans ce code, que signifie it?

15
Sujin Shrestha

it variable est un paramètre implicite dans lambda.

Une autre convention utile est que si un littéral de fonction n'a que un paramètre, sa déclaration peut être omise (avec le ->) et son nom sera it:

27
holi-java

Veuillez vous reporter à la description suivante. 

it: nom implicite d'un seul paramètre

Il est très courant qu'une expression lambda n'ait qu'un seul paramètre.

Si le compilateur peut comprendre la signature elle-même, elle n'est pas autorisée pour déclarer le seul paramètre et omettre ->. Le paramètre sera implicitement déclaré sous le nom it:

ints.filter { it > 0 } // this literal is of type '(it: Int) -> Boolean'

https://kotlinlang.org/docs/reference/lambdas.html#it-implicit-name-of-a-single-parameter

4
JAMES HWANG
val list = listOf(1,2,3,4,5,6,7).filter { it > 2 }
for(i in list){
    println(i)
}

Dans cet exemple, la taille de la liste est 7. En utilisant it , la taille de la liste est 5. Pour la vérification en boucle uniquement> 2 chiffres

taille = 5 et la sortie est 3,4,5,6,7

1
BloodLoss