如果我定义了以下记录:
(defrecord Person [name id])
以及以下内容:
(s/def ::name string?)
(s/def ::id int?)
(s/def ::person (s/keys :req-un [::name ::id]))
如何确保您不能创建不符合 ::person 规范的 Person?换句话说,以下应该引发异常:
(->Person "Fred" "3")
我试过了:
(s/fdef ->Person :ret ::person)
但打电话:
(->Person "Fred" "3")
不会引发异常。
然而:
(s/conform ::person (->Person "Fred" "3"))
确实产生了预期:
:clojure.spec/invalid
谢谢