注册规范
除了作为规范运行的谓词之外,你还可以使用 clojure.spec/def
全局注册规范。def
要求注册的规范由名称空间限定的关键字命名:
(clojure.spec/def ::odd-nums odd?)
;;=> :user/odd-nums
(clojure.spec/valid? ::odd-nums 1)
;;=> true
(clojure.spec/valid? ::odd-nums 2)
;;=> false
注册后,可以在 Clojure 程序的任何位置全局引用规范。
假设我们在 user
命名空间中,::odd-nums
语法是:user/odd-nums
的简写。::
将使用当前的 namesapce 限定它之前的符号。
我们可以将规范名称传递给 valid?
,而不是传入谓词,它将以相同的方式工作。