函数 clojure.spec.test.alpha/check 会自动忽略不可检查的符号。对我来说这看起来是一个反直观的行为,因为我预期当我对一个没有 spec(例如拼写错误)的符号调用 check 时,它会失败。
check 的定义如下:
`
(defn check
([] (check (checkable-syms)))
([sym-or-syms] (check sym-or-syms nil))
([sym-or-syms opts]
(->> (collectionize sym-or-syms)
(filter (checkable-syms opts))
(pmap
#(check-1 (sym->check-map %) opts)))))
`
在我看来,似乎可以将 (filter (checkable-syms opts)) 送到无参数版本中。