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

欢迎!有关本站工作方式的更多信息,请参阅关于页面。

0
Spec

使用 s/assert 代替 assert 有优势:即数据未满足规范的具体原因。但这也存在缺点:错误信息不包含用户编写的断言代码,因此更难看到哪个断言失败。

我相信,如果 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 报告)
...