2014-12-19 96 views

回答

0

如果你不想依赖外部库,clojure的(assert)支持一个可选的消息。

的缺点是,你将失去一个:pre的可读性,必须将结果保存为:post检查中间变量(或在某些宏魔术包起来)。

简单的例子:

(defn mysqrt [x] 
    ;; preconditions 
    (assert (pos? x) "Positive numbers only") 
    (let [y (Math/sqrt x)] 
    ;; postconditions 
    (assert (number? y) "Some strange error happened") 
    y))