什么是println(_)?

问题描述 投票:1回答:1

我在scala中有这段代码

val wordCounts = logData.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts.foreach(println(_))

那么println(_)是什么意思,它应该打印什么?

scala lambda syntactic-sugar scala-placeholder-syntax
1个回答
2
投票

"Placeholder Syntax for Anonymous Functions" of the Spec部分所述,

println(_)

是匿名函数文字的快捷方式

w => println(w)

这反过来又是类似的捷径

(w: (String, Int)) => println(w)

在这种特殊情况下。

因此,

wordCounts.foreach(println(_))

只需打印wordCounts的每个元素。

请注意,它也可以写得更短:

wordCounts foreach println
© www.soinside.com 2019 - 2024. All rights reserved.