三元运算符是惰性求值的一个例子吗? 如果我们假设代码片段如下: 变量=条件? function1(param):function2(param); 它可以作为懒惰评估的一个例子吗?
答案 0 :(得分:2)
在大多数语言中 - 是的,它被懒惰地评估。然而,情况并不一定如此。来自Wikipedia:
请注意,某些语言可能会同时评估“真实”和“真实” 假表达式,即使只分配了一个或另一个 到变量。这意味着如果是真或假表达 包含函数调用,该函数可以被调用和执行 (由于函数的执行导致任何相关的副作用), 无论其结果是否会被使用。
例如,在Delphi中,它没有被懒惰地评估:
与真正的三元运算符不同,两个结果都是 在进行比较之前进行评估。例如,如果其中之一 结果是调用一个函数,该函数将一行插入一个 数据库表,无论是否调用该函数 返回满足特定结果的条件。