str.foreach(println) // works aa bb scala-6ren">
gpt4 book ai didi

scala - foreach(println) 和 foreach(println()) 有什么区别?

转载 作者:行者123 更新时间:2023-12-01 13:47:33 26 4
gpt4 key购买 nike

我有一个字符串数组:

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() 吗?

最佳答案

println 是一种接受输入(在本例中为 String)并产生结果(Unit)的方法(可转换为函数)和副作用(打印到 StdOut)。

println() 是调用一个不接受输入的方法,产生一个结果(Unit)和一个副作用(\n 到 StdOut)。

它们不一样。

第二个在 foreach() 中不起作用,因为 foreach() 将元素(在本例中为字符串)提供给它的参数,而 println( ) 不会接受 foreach() 提供给它的输入。

这将有效 str.foreach(_ => println()) 因为下划线箭头 (_ =>) 表示:“忽略输入。只需抛出它离开并调用下面的内容。”

关于scala - foreach(println) 和 foreach(println()) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58211562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com