如何在clojure pre expr中引发异常?

如何在clojure pre expr中引发异常?,clojure,pre,Clojure,Pre,clojure的pre-expr看起来很酷,但是如果我想在:pre为false时引发异常,是否有可能 谢谢。您可以改用 前提条件是必须为真的条件,否则将引发异常。如果您有一个条件,希望在为false时抛出异常,则只需对该条件进行补码或对结果进行非即可 user=> (defn magic? [n] (= 0 (rem n 42))) #'user/magic? user=> (defn magic? [n] (= 0 (rem n 42))) #'user/magic? u

clojure的pre-expr看起来很酷,但是如果我想在
:pre
为false时引发异常,是否有可能

谢谢。

您可以改用


前提条件是必须为真的条件,否则将引发异常。如果您有一个条件,希望在为false时抛出异常,则只需对该条件进行
补码
或对结果进行
即可

user=> (defn magic? [n] (= 0 (rem n 42)))
#'user/magic?



user=> (defn magic? [n] (= 0 (rem n 42)))
#'user/magic?
user=> (defn foo [n] {:pre [(magic? n)]} n)
#'user/foo
user=> (foo 42)
42
user=> (defn bar [n] {:pre [(not (magic? n))]} n)
#'user/bar

user=> (bar 42)
AssertionError Assert failed: (not (magic? n))  user/bar 
user=> (defn baz [n] {:pre [((complement magic?) n)]} n)
#'user/baz
user=> (baz 42)

AssertionError Assert failed: ((complement magic?) n)  user/baz