我想知道是否有可能在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