在许多语言中,如果你写一些类似的东西
if (foo() || bar() || foobar()) { /* do stuff */ }
并且 foo() 返回 true,则不会评估 bar() 和 foobar()。
假设我有以下 Clojure 代码:
(let [a (simple-function args)
b (complex-function args)
c (too-lazy-to-optimize-this-function args)]
(or a b c))
如果 a 计算结果为真,那么 b 和 c 也会被计算,还是会被忽略?
谢谢!