我尝试使用谷歌搜索,但没有找到一个合适的forall
示例。它是什么?为什么要使用布尔函数?
请给我提供一些参考资料(除了 Scaladoc)。
我尝试使用谷歌搜索,但没有找到一个合适的forall
示例。它是什么?为什么要使用布尔函数?
请给我提供一些参考资料(除了 Scaladoc)。
forall
方法接受一个返回布尔值的函数p
。 forall
方法的语义是:如果对于集合中的每个x
,p(x)
都为真,则返回true
。
因此:
List(1,2,3).forall(x => x < 3)
意思是: 如果 1、2 和 3 都小于 3,则为true
,否则为false
。在此情况下,它将评估为false
,因为所有元素都不小于3:3不小于3。
还有一个类似的方法exists
,如果集合中存在至少一个元素x
使得p(x)
返回true,则返回true
。
因此:
List(1,2,3).exists(x => x < 3)
意思是:当1、2和3中至少有一个小于3时,返回true
,否则返回false
。在这种情况下,它将评估为true
,因为其中某个元素小于3:例如1小于3。
forall(foo)
相当于 foldLeft(true)((x,y)=> x & foo(y))
。 - Jus12&&
是因为它进行了短路评估(如果找到 false
就停止评估 foo
)。 - dhg以下是一个使用 Scala
脚本来操作该函数的快速示例。
创建名为 myScript.scala
的文件,其中包含:
println(args.forall(p => (p.equals("a"))))
并使用以下代码进行调用
scala myScript.scala a a a // true
scala myScript.scala a b c // false
Scala的forall
也是一个很好的工具,可以像应用逻辑and到布尔值列表一样使用,同时还支持提前退出:
val evalResults: List[Boolean] = List(evaluateFunc1(), evaluateFunc2(), evaluateFunc3(), evaluateFunc4(), evaluateFunc5())
evalResults.forall(result => result == true)
forall(result => result)
- codeaperature
foreach
的功能是遍历所有元素。 - 0__