I tried Google search and could not find a decent forall
example. What does it do? Why does it take a boolean function?
Please point me to a reference (exce
Scala's forall
is also a great tool to do something like applying logical and to a list of boolean values with the early exist:
val evalResults: List[Boolean] = List(evaluateFunc1(), evaluateFunc2(), evaluateFunc3(), evaluateFunc4(), evaluateFunc5())
evalResults.forall(result => result == true)
The forall
method takes a function p
that returns a Boolean. The semantics of forall
says: return true
if for every x
in the collection, p(x)
is true.
So:
List(1,2,3).forall(x => x < 3)
means: true
if 1, 2, and 3 are less than 3, false
otherwise. In this case, it will evaluate to false
since it is not the case all elements are less than 3: 3 is not less than 3.
There is a similar method exists
that returns true
if there is at least one element x
in the collection such that p(x)
is true.
So:
List(1,2,3).exists(x => x < 3)
means: true
if at least one of 1, 2, and 3 is less than 3, false
otherwise. In this case, it will evaluate to true
since it is the case some element is less than 3: e.g. 1 is less than 3.
A quick example of how you can play with this function using a Scala
script.
create a myScript.scala
file with
println(args.forall(p => (p.equals("a"))))
and call it with
scala myScript.scala a a a // true
scala myScript.scala a b c // false