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]))

2番目のものは私が期待することを行います-条件はfalseと評価されます-[編集:実際には、それは本当であり、私はまだ「オペレーターファースト」の推論に慣れていません!]、if2番目の選択肢を返そうとします。 noneであるため、を返しますnil。では、なぜ最初は戻らないのnilですか?空の構造が「十分に近い」ためにゼロになるのでしょうか。

4

1 に答える 1

3

最初のif式は true と評価されるため (実際には 4 は 3 よりも大きいため)、else 節は無関係です。と定義された then 節を返します[]

于 2013-01-07T09:20:38.010 に答える