【发布时间】:2015-03-31 18:27:48
【问题描述】:
我开始使用 Clojure 并注意到虽然 Clojure 的 or 行为据说返回第一个真值,但将两个假值传递给 or 只返回第二个值:
user=> (or false false)
false
user=> (or false nil)
nil
我的经验主要是在 Python 中,其中
>>> False or False
False
这些不是类似的吗?我知道这是http://clojuredocs.org/clojure.core/or 的预期行为,并按照建议调查http://clojuredocs.org/clojure.core/if,但仍不清楚为什么会这样。
【问题讨论】:
-
嗯,在 Python 中你使用
or,而不是|。|是按位的。 Python 中的or的行为类似于 Clojure 中的or(不幸的是)。 -
对,这太草率了。谢谢!
-
我刚刚注意到这里的“布尔”标签 - clojure 中的
or绝不是布尔值 -
在虚假情况下我想不出任何东西,但是对于真实值,有像
... (let x [or x default-value-for-x] body-using-x)...这样的成语依赖于or返回表达式的值而不是true。