三元算子和懒惰的评估

时间:2015-07-08 04:30:57

标签: lazy-evaluation

三元运算符是惰性求值的一个例子吗? 如果我们假设代码片段如下: 变量=条件? function1(param):function2(param); 它可以作为懒惰评估的一个例子吗?

1 个答案:

答案 0 :(得分:2)

在大多数语言中 - 是的,它被懒惰地评估。然而,情况并不一定如此。来自Wikipedia

  

请注意,某些语言可能会同时评估“真实”和“真实”   假表达式,即使只分配了一个或另一个   到变量。这意味着如果是真或假表达   包含函数调用,该函数可以被调用和执行   (由于函数的执行导致任何相关的副作用),   无论其结果是否会被使用。

例如,在Delphi中,它没有被懒惰地评估:

  

与真正的三元运算符不同,两个结果都是   在进行比较之前进行评估。例如,如果其中之一   结果是调用一个函数,该函数将一行插入一个   数据库表,无论是否调用该函数   返回满足特定结果的条件。