这周我开始学习Clojure。我正在用我自己的方式处理条件考恩,并不理解以下断言:
"Some of them leave you no alternative"
(= [] (if (> 4 3)
[]))
"And in such a situation you may have nothing"
(= nil (if (nil? 0)
[:a :b :c]))第二个是我所期望的--条件的计算结果为false--编辑:实际上,它是真的,我只是还不习惯“运算符优先”推理!,if尝试返回第二个备选方案,但没有找到,因此返回nil。那么,为什么第一个不返回nil呢?是不是因为一个空的结构“足够接近”到零?
发布于 2013-01-07 17:20:38
因为第一个if的计算结果为true (因为4确实大于3),所以else-子句是不相关的。它返回then-子句,该子句已定义并等于[]。
https://stackoverflow.com/questions/14192921
复制相似问题