clojurescript`和`函数与整数的行为令人困惑

时间:2014-01-15 18:58:26

标签: integer boolean clojurescript

可能只是在这里展示我对lisp(s)的无知,但是我对ClojureScript的and函数有一些奇怪的结果:

(and true false) ; false
(and false true) ; false
(and 1 0)        ; 0
(and 0 1)        ; 1 !?

这里发生了什么?我至少期待对称;这与truefalse的位存储有关吗?

1 个答案:

答案 0 :(得分:7)

如果所有参数都是真实的,则

and返回它的最后一个参数,否则返回false(它一旦到达第一个虚假参数,它也会停止评估参数)。在Clojure中,与Javascript不同,01都是真实的。 Clojure中唯一的假值是falsenil

http://blog.jayfields.com/2011/02/clojure-truthy-and-falsey.html