Afs*_*ani 17 algorithm terminology lazy-evaluation short-circuiting
来自维基百科:
懒惰的评价是:
在编程语言理论中,延迟评估或按需调用是一种评估策略,它延迟表达式的评估,直到需要它的值
短路评估是:
短路评价,最小评估,或麦卡锡评价表示在将第二个参数时,才执行或评价一些编程语言一些布尔运算符的语义如果第一参数不足以确定表达式的值
那么它们之间有什么区别,例如当我有:
if(false && true && true) {
//boo
}
Run Code Online (Sandbox Code Playgroud)
据我所知,编译器之后不会执行表达式,false因为我已经完成&&了整个表达式false.(对?)
这种行为称为懒惰评估还是短路评估?
Art*_*lev 18
不同之处在于,在延迟评估的情况下,仅在需要时评估表达式,而在短路评估的情况下,表达式评估在您知道结果后立即停止.这是一种正交的概念.
延迟评估可以应用于任何计算(短路方案通常仅用于bool).它不会切断无用的计算,但会延迟整个计算,直到需要它的结果.
variable = bigAndSlowFunc() or evenSlowerFnc()
if (carry out heavy computations)
print "Here it is: ", variable
else
print "As you wish :-)"
Run Code Online (Sandbox Code Playgroud)
如果评估是懒惰的,variable只有当我们选择进入first(then)分支if时才会计算,否则不会.在评估阶段(当我们准备参数时print),可以使用短路方案来决定是否需要调用evenSlowerFnc.
所以在你的例子中,它是短路评估,因为没有计算延迟发生.
| 归档时间: |
|
| 查看次数: |
2733 次 |
| 最近记录: |