可能只是在这里展示我对lisp(s)的无知,但是我对ClojureScript的and
函数有一些奇怪的结果:
(and true false) ; false
(and false true) ; false
(and 1 0) ; 0
(and 0 1) ; 1 !?
这里发生了什么?我至少期待对称;这与true
和false
的位存储有关吗?
答案 0 :(得分:7)
and
返回它的最后一个参数,否则返回false
(它一旦到达第一个虚假参数,它也会停止评估参数)。在Clojure中,与Javascript不同,0
和1
都是真实的。 Clojure中唯一的假值是false
和nil
。
http://blog.jayfields.com/2011/02/clojure-truthy-and-falsey.html