Clojure中的自定义条件断言错误消息?
例如,假设我想提醒用户输入类型错误Clojure中的自定义条件断言错误消息?,clojure,Clojure,例如,假设我想提醒用户输入类型错误 (defn my-sqrt [x] {:pre [(not (neg? x))]} (Math/sqrt x)) 是否可以只发出一个正数消息,而不是像assert failed这样的消息?您可以使用。你应该看看它对我们的支持 如果您不想依赖外部库,clojure的断言支持可选消息 缺点是,您将失去:pre的可读性,并且必须将结果保存在中间变量中以进行:post检查,或者用一些宏魔术将其包装起来 简单的例子: (defn mysqrt [x]
(defn my-sqrt [x] {:pre [(not (neg? x))]} (Math/sqrt x))
是否可以只发出一个正数消息,而不是像assert failed这样的消息?您可以使用。你应该看看它对我们的支持 如果您不想依赖外部库,clojure的断言支持可选消息 缺点是,您将失去: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))