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

欢迎!请查看关于页面以了解更多关于如何工作的信息。

0
Spec

使用 s/assert 而不是 assert 具有优点:即数据未能满足 spec 的具体原因。但同时也存在缺点:错误消息不包含用户编写的断言代码,因此更难看到哪个断言失败。

我相信,如果我们能在 s/assert 中包含原始的 "assert" 代码,我们就能拥有两者的最佳之处——这样,错误消息就可以(可选地)打印出此信息。

`
(require '[clojure.spec.alpha :as s])
(s/check-asserts true)

(let [x 1]

(s/assert string? x))

;; Spec 断言失败 val: 1 失败
;; :clojure.spec.alpha/unknown

(let [x 1]

(assert (string? x)))

;; 断言失败: (string? x)
`

1 答案

0
参考:https://clojure.atlassian.net/browse/CLJ-2273(由 bbrinck 报告)
...