web-dev-qa-db-ja.com

Kotlinラムダ本体の「それ」とは何ですか?

たとえば、次の2つのコードの場合:

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

そして

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

このコードでitはどういう意味ですか?

20
Sujin Shrestha

it 変数は、ラムダの暗黙的なパラメーターです。

他の便利な規則の1つは、関数リテラルに1つのパラメーターのみがある場合、その宣言は(->とともに)省略でき、その名前はbeit

29
holi-java

次の説明を参照してください。

it:単一のパラメータの暗黙的な名前

ラムダ式にはパラメーターが1つしかありません。

コンパイラが署名自体を把握できる場合、唯一のパラメータを宣言せずに->を省略できます。パラメーターは、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

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

この例では、リストサイズは7です。itを使用すると、リストサイズは5です。

サイズ= 5、出力は3,4,5,6,7

1
BloodLoss