web-dev-qa-db-fra.com

Scala par exemple?

J'ai essayé la recherche de Google et n'ai pas pu trouver un exemple décent forall. Qu'est ce que ça fait? Pourquoi faut-il une fonction booléenne?

Veuillez m'indiquer une référence (sauf le Scaladoc).

44
Jus12

La méthode forall prend une fonction p qui renvoie un booléen. La sémantique de forall dit: return true si pour chaque x de la collection, p(x) est vrai.

Alors:

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

signifie: true si 1, 2 et 3 sont inférieurs à 3, false sinon. Dans ce cas, il sera évalué à false car ce n'est pas le cas, tous les éléments sont inférieurs à 3: 3 n'est pas inférieur à 3.

Il existe une méthode similaire exists qui renvoie true s'il existe au moins un élément x dans la collection, de sorte que p(x) est vrai.

Alors: 

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

signifie: true si au moins un de 1, 2 et 3 est inférieur à 3, false sinon. Dans ce cas, il sera évalué à true puisqu'il s'agit du cas où un élément est inférieur à 3: par ex. 1 est inférieur à 3.

80
dhg

Un exemple rapide de la façon dont vous pouvez jouer avec cette fonction en utilisant un script Scala.

créer un fichier myScript.scala avec 

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

et appelez avec 

scala myScript.scala a a a  // true
scala myScript.scala a b c  // false
3
JAM

La variable forall de Scala est également un excellent outil pour appliquer une action similaire à l'application de et logiques à une liste de valeurs booléennes avec le early exist :

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

evalResults.forall(result => result == true)
0
Stas