註冊規範
除了作為規範執行的謂詞之外,你還可以使用 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?
,而不是傳入謂詞,它將以相同的方式工作。