2024年 Clojure 状态调查 中分享您的想法!

欢迎!请参阅 关于 页面以获取更多关于如何使用本信息。

0 投票
Spec

函数 clojure.spec.test.alpha/check 静默忽略不可验证的符号。对我来说,这似乎是反直觉的,因为我本以为在调用 check 时,如果符号没有 spec(例如拼写错误),则应该失败。

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)) 可能更适合用在无参数的变体中。

3 个答案

0 投票

评论由 [email protected] 提出

附加 clj-2472-1.patch。它保留向后兼容性,这使其变得有些复杂。

0 投票

评论由 [email protected] 提出

对补丁进行了微小的修改(使用 'when' 代替 'if')。解决方案的思路是引入新的选项 :assert-checkable,以断言提供的符号是可验证的。

0 投票
...