51

我尝试了谷歌搜索,但找不到一个像样的forall例子。它有什么作用?为什么它需要一个布尔函数?

请给我一个参考(Scaladoc除外)。

4

3 回答 3

91

forall方法采用一个p返回布尔值的函数。的语义forall说:如果集合中true的每一个都为真,则返回。xp(x)

所以:

List(1,2,3).forall(x => x < 3)

意思是:true如果1、2、3小于3,false否则。在这种情况下,它将评估为,false因为并非所有元素都小于 3:3 不小于 3。

如果集合中至少有一个元素为真,则有一个类似的方法exists返回。truexp(x)

所以:

List(1,2,3).exists(x => x < 3)

表示:true如果1、2、3中至少有一个false小于3,否则。在这种情况下,它将评估为,true因为某些元素小于 3:例如 1 小于 3。

于 2012-09-22T20:00:09.193 回答
4

一个快速示例,说明如何使用Scala脚本使用此功能。

创建一个myScript.scala文件

println(args.forall(p => (p.equals("a"))))

并调用它

scala myScript.scala a a a  // true
scala myScript.scala a b c  // false
于 2013-01-06T02:52:03.097 回答
0

Scalaforall也是一个很好的工具,可以执行一些操作,例如应用逻辑早期存在的布尔值列表:

val evalResults: List[Boolean] = List(evaluateFunc1(), evaluateFunc2(), evaluateFunc3(), evaluateFunc4(), evaluateFunc5())

evalResults.forall(result => result == true)
于 2018-06-17T12:04:55.347 回答