println(_)是什么意思?

时间:2018-09-19 23:32:23

标签: scala lambda syntactic-sugar scala-placeholder-syntax

我在scala中有这段代码

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

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

1 个答案:

答案 0 :(得分: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