我想知道是否有可能在scala中實現邏輯蘊涵。 例如:在scala中實現蘊涵邏輯運算符
a implies b
翻譯成:
!a || b
其中a
和b
一些表達式計算結果爲Boolean
。
我最初開始之後,但是這是一種錯誤的做法
implicit def extendedBoolean(a : Boolean) = new {
def implies(b : Boolean) = {
!a || b
}
}
,因爲它會評估a
都a
和b
無論這個值。當a
爲真時,正確的解決方案將僅評估b
。
你調用的* nullary函數*在Scala中調用*名稱參數*。 – ziggystar 2012-04-20 16:29:19
是的。正如我鏈接到的Scala網站上的頁面所解釋的那樣,在Scala中通過將表達式自動轉換爲無函數來實現「所謂的_call-by-name_評估」。我認爲描述_how_ Scala實現語言功能比僅僅注意如何使用call-by-name更具有趣味性和教育性。 – ellisbben 2012-04-20 18:13:43
編輯強調這是一個名叫 – ellisbben 2012-04-20 18:24:25