【问题标题】:what is does it mean println(_)?println(_) 是什么意思?
【发布时间】:2019-02-24 04:44:28
【问题描述】:

我在 scala 中有这段代码

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

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

【问题讨论】:

  • 你会发现_的意思是:What are all the uses of an underscore in Scala?。您的代码等同于wordCounts.foreach(x => println(x)) ,其中_ 代表每个元素
  • @prayagupd 我今天已经尝试使用这个 Q/A 作为重复目标,最后一个提问者不喜欢它:太多无关的东西,不得不重新打开......:/跨度>

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


【解决方案1】:

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

println(_)

是匿名函数字面量的快捷方式

w => println(w)

这又是类似的捷径

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

在这种特殊情况下。

因此,

wordCounts.foreach(println(_))

只打印wordCounts 的每个元素。

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

wordCounts foreach println

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    • 2023-03-27
    • 1970-01-01
    • 2013-03-09
    • 2020-05-01
    相关资源
    最近更新 更多