问题

我有一个字符串数组:

 val str:Array[String] = Array("aa","bb")
scala> str.foreach(println) // works
aa
bb
scala> str.foreach(println()) // println() also returns a Unit, doesn't it?
                          ^
error: type mismatch;
found   : Unit
required: String => ?
 

为什么str.foreach(println)没有问题,但str.foreach(println())没有?
2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 println等于println()返回Unit值吗?

  最佳答案

println是一种方法(可转换为函数),它接受输入(本例为String)并产生结果(Unit)和侧面效果(打印到StdOut).

println() 是指调用一种没有输入的方法,产生一个结果(Unit)和一个侧面效果( to StdOut)。

它们不一样。

第二个不适用于foreach(),因为foreach()向其参数提供元素(本例中的字符串),println()不会获取foreach()提供的输入.

这将工作str.foreach(_ => println()),因为underscore-short(_ =>)说:“Ignore输入.只需抛出它并调用以下内容.”

  相同标签的其他问题

scalaeta-expansion