如果值无效,则应该在规范创建时快速失败。当前,可以创建无效的规范,这些规范将在对s/valid?
等的调用中失败较晚。
`
(s/def ::a 1)
(s/valid? ::a 1)
; 编译时语法错误 (ClassCastException) 在 ...
; java.lang.Long不能转换为 clojure.lang.IFn
(s/valid? (s/or :a 1 :b 2) 1)
; 编译时语法错误 (ClassCastException) 在 ...
; java.lang.Long不能转换为 clojure.lang.IFn
`