1

这周我开始学习 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]))

第二个做了我所期望的——条件评估为假——[编辑:实际上,这是真的,我只是还不习惯“操作员优先”的推理!],if试图返回第二个选择,发现无,所以返回nil。那么,为什么第一个不返回nil?是因为空结构“足够接近”零吗?

4

1 回答 1

3

因为第一个if计算结果为真(因为 4 确实大于 3),所以 else 子句是不相关的。它返回定义并等于 的 then 子句[]

于 2013-01-07T09:20:38.010 回答