【发布时间】:2011-10-27 13:42:04
【问题描述】:
在这个函数中:
(defn my-post
[a]
{:post (number? %)}
a)
后置条件不执行(或至少不会导致断言错误)。我现在知道它应该是:
(defn my-post
[a]
{:post [(number? %)]} ;; note the square brackets around the expression
a)
事实上,这确实可以正常工作。
问题是这无声无息地失败了,我花了一段时间才弄清楚出了什么问题。没有语法错误,运行时异常。
我想了解 Clojure 对这段代码做了什么,以了解为什么 Clojure 没有抱怨。 宏扩展?解构?如果没有看到方括号,代码会消失吗?
【问题讨论】:
-
请解释一下这个后置条件是什么?我无法弄清楚这个方法的目的是什么。
标签: compilation clojure compiler-errors compiler-warnings post-conditions