clojure注册规范

例子

除了充当规范的谓词外,您还可以使用全局注册一个规范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程序中的任何地方全局引用规范。

该::odd-nums语法是一个速记:user/odd-nums,假设我们在user命名空间。::将使用当前名称空间限定其前面的符号。

除了传递谓词外,我们还可以将规范名称传递给valid?,它将以相同的方式工作。