Supposons que mon code contienne un certain nombre de prédicats booléens :
def pred1[A](x: A): Boolean = { ... }
def pred2[A](x: A): Boolean = { ... }
def pred3[A](x: A): Boolean = { ... }
J'aimerais pouvoir créer une fonction qui soit, par exemple, le OU logique de pred1
y pred3
.
Donc, quelque chose comme :
def pred1Or3[A](x: A) = or(pred1, pred2)
Mieux encore, il serait intéressant de pouvoir généraliser afin de fournir ma propre fonction de combinaison. Ainsi, si au lieu de cela, je voulais avoir le ET logique, j'appellerais :
def pred1And3[A](x: A) = combine({_ && _}, pred1, pred2)
Je peux obtenir le même effet de base de cette manière :
def pred1And3[A](x: A) = Seq(pred1, pred2) map { _(x) } reduce { _ && _ }
mais cela semble un peu verbeux et brouille l'intention. Existe-t-il un moyen plus simple de faire cela en Scala ?