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