假设我在我的代码中定义了许多布尔谓词:
def pred1[A](x: A): Boolean = { ... }
def pred2[A](x: A): Boolean = { ... }
def pred3[A](x: A): Boolean = { ... }
现在,我希望能够创建一个函数,例如,pred1
and的逻辑 OR pred3
。
所以,像:
def pred1Or3[A](x: A) = or(pred1, pred2)
更好的是,能够泛化以便我可以提供自己的组合功能会很好。所以,如果相反,我想要逻辑与,我会调用:
def pred1And3[A](x: A) = combine({_ && _}, pred1, pred2)
我可以通过这种方式达到相同的基本效果:
def pred1And3[A](x: A) = Seq(pred1, pred2) map { _(x) } reduce { _ && _ }
但这似乎有点冗长,并掩盖了意图。在 Scala 中有没有更简单的方法来做到这一点?