3
如果我定义了以下记录:Clojure的规范和记录构造
(defrecord Person [name id])
及以下:
(s/def ::name string?)
(s/def ::id int?)
(s/def ::person (s/keys :req-un [::name ::id]))
我怎么能保证你不能创建不符合一个人到::人的规格?换句话说,下面应该抛出一个异常:
(->Person "Fred" "3")
我想:
(s/fdef ->Person :ret ::person)
但调用:
(->Person "Fred" "3")
不会引发异常。
但是:
(s/conform ::person (->Person "Fred" "3"))
不会产生预期:
:clojure.spec/invalid
感谢