Ответ 1
эта переменная является неявным параметром в лямбда.
Одна другой полезной конвенции является то, что если функция литерал имеет только один параметр, его выражение может быть опущено (вместе с ->), и его имя будет его:
Например, в следующих двух следующих кодах:
File("./file1.txt").forEachLine { println(it) }
а также
File("somefile.txt").bufferedWriter().use { out ->
history.forEach {
out.write("${it.key}, ${it.value}\n")
}
}
В этом коде, что it
значит?
эта переменная является неявным параметром в лямбда.
Одна другой полезной конвенции является то, что если функция литерал имеет только один параметр, его выражение может быть опущено (вместе с ->), и его имя будет его:
Пожалуйста, обратитесь к нижеследующему описанию.
it: неявное имя одного параметра
Очень распространено, что выражение лямбда имеет только один параметр.
Если компилятор сам может определить подпись, разрешено не объявлять единственный параметр и опускать ->. Параметр будет неявно объявлен под именем 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
val list = listOf(1,2,3,4,5,6,7).filter { it > 2 }
for(i in list){
println(i)
}
В этом примере размер списка равен 7. Используя его, размер списка равен 5. Для проверки только цикла> 2 числа
размер = 5 и выход 3,4,5,6,7