假設我有我的代碼中定義了一些布爾謂詞:創建一個返回邏輯的幾個布爾謂詞或函數
def pred1[A](x: A): Boolean = { ... }
def pred2[A](x: A): Boolean = { ... }
def pred3[A](x: A): Boolean = { ... }
現在,我希望能夠創建一個函數,例如,pred1
和pred3
的邏輯或。
所以,像這樣:
def pred1Or3[A](x: A) = or(pred1, pred2)
更妙的是,它會是不錯的能夠一概而論,這樣我可以提供我自己的組合功能。所以,如果不是,我想有邏輯AND,我稱之爲:
def pred1And3[A](x: A) = combine({_ && _}, pred1, pred2)
我可以達到同樣的效果基本是這樣的:
def pred1And3[A](x: A) = Seq(pred1, pred2) map { _(x) } reduce { _ && _ }
,但似乎有點冗長和雲意圖。在Scala中有更簡單的方法嗎?
[Applicatives(http://stackoverflow.com/q/13437773/1346276)解決一般情況,但我不確定它們是否可以在Scala中實現。 – phg