我有一个字符串数组:
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())没有问题?
println不等同于返回Unit值的println()吗?
发布于 2019-10-03 06:59:24
println是一种接受输入(在本例中为String)并产生结果(Unit)和副作用(打印到StdOut)的方法(可转换为函数)。
println()是对不需要输入、生成结果(Unit)和副作用(\n到StdOut)的方法的调用。
他们是不一样的。
第二个不能在foreach()中工作,因为foreach()将元素(在本例中为字符串)提供给它的参数,而println()将不接受foreach()为其提供的输入。
这将使用str.foreach(_ => println()),因为下划线箭头(_ =>)说:“忽略输入,只需丢弃它并调用下面的内容。”
发布于 2019-10-03 02:40:31
原因是你缺少下划线。尝尝这个
str.foreach(println(_))https://stackoverflow.com/questions/58211562
复制相似问题