首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >foreach(println)和foreach(println())之间有什么区别?

foreach(println)和foreach(println())之间有什么区别?
EN

Stack Overflow用户
提问于 2019-10-03 02:28:12
回答 2查看 186关注 0票数 2

我有一个字符串数组:

代码语言:javascript
复制
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()吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-03 06:59:24

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

println()是对不需要输入、生成结果(Unit)和副作用(\n到StdOut)的方法的调用。

他们是不一样的。

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

这将使用str.foreach(_ => println()),因为下划线箭头(_ =>)说:“忽略输入,只需丢弃它并调用下面的内容。”

票数 7
EN

Stack Overflow用户

发布于 2019-10-03 02:40:31

原因是你缺少下划线。尝尝这个

代码语言:javascript
复制
str.foreach(println(_))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58211562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档