我是Kotlin的初学者。 你如何解释以下代码片段?
fun main(args: Array<String>) {
var k = listOf<Double>(1.2,77.8,6.3,988.88,0.1)
k.forEach(::println)
}
这样运行正常并给出了列表,但有人可以帮助解释k.forEach(:: println)如何真正起作用吗?
答案 0 :(得分:6)
forEach
获取k
中的每个元素并执行指定要执行的。在您的示例中,&#34; 内容&#34;参数是::println
,它引用stdlib函数println(message: Any)
。 ::
为此函数引入了function reference。每个元素都作为参数message
传递给println
,因此它将被打印在控制台上。
为了更清楚,你可以传递一个lambda而不是像这样的函数引用:
k.forEach{
println(it)
}
答案 1 :(得分:-2)
inline fun Iterable.forEach(action: (T) -> Unit)
public inline fun Iterable.forEach(action:(T) - &gt; Unit):Unit { for(this in this)action(element)}