什么是Kotlin lambda体内的“它”?

时间:2017-06-27 06:12:59

标签: java file jvm kotlin

例如,在以下两个代码中:

security.authorization: enabled 

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

在此代码中File("somefile.txt").bufferedWriter().use { out -> history.forEach { out.write("${it.key}, ${it.value}\n") } } 是什么意思?

4 个答案:

答案 0 :(得分:27)

it变量是lambda中的隐式参数。

  

另一个有用的约定是,如果函数文字只有一个参数,则可以省略其声明(以及 - >),其名称将为

答案 1 :(得分:5)

请参阅以下说明。

  

它:单个参数的隐含名称

     

lambda表达式只有一个参数非常常见。

     

如果编译器可以自己计算签名,则不允许   声明唯一参数并省略 - >。参数将是   隐含地在名称下声明:

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

答案 2 :(得分:2)

这是kotlin组织文档:it: implicit name of a single parameter

例如

ints.filter { value -> value > 0 }

您可以将其简化为:

ints.filter { it > 0 }

无法使用时

ints.filter { value > 0 }

答案 3 :(得分:1)

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

在此示例中,列表大小为7。使用 it ,列表大小为5。仅用于循环检查> 2个数字

  

size = 5,输出为3,4,5,6,7