维基百科:
懒惰评价是:
在程序设计语言理论中,延迟计算或按需要调用是一种评估策略,它将表达式的计算延迟到需要它的值为止。
短路评估是:
短路求值、最小求值或McCarthy求值表示某些布尔运算符在某些编程语言中的语义,其中第二个参数仅在第一个参数不足以确定表达式的值时执行或求值。
所以,它们之间有什么区别,例如,当我有:
if(false && true && true) {
//boo
} 据我所知,编译器不会在false之后执行表达式,因为我有&&,所以整个表达式最终将是false。(对吧?)
因此,这种行为被称为延迟评估或短路评估。
发布于 2013-02-16 09:27:06
区别在于,在惰性评估的情况下,表达式只在需要时才被评估,而在短路评估的情况下,表达式评估就会在知道结果之后立即停止。这是一种正交概念。
懒惰评估可以应用于任何计算(短路方案通常只用于bools)。它没有切断无用的计算,但是将整个计算延迟到需要它的结果时。
variable = bigAndSlowFunc() or evenSlowerFnc()
if (carry out heavy computations)
print "Here it is: ", variable
else
print "As you wish :-)"如果评估是懒惰的,那么只有当我们选择进入variable的第一个(then)分支时,才会计算它,否则就不会计算。在评估阶段(当我们为print准备参数时),可以使用短路方案来决定是否需要调用evenSlowerFnc。
所以在你的例子中,这是短路评估,因为没有延迟的计算发生。
https://stackoverflow.com/questions/14908548
复制相似问题