【发布时间】:2016-10-19 12:37:52
【问题描述】:
我在最后几天深入研究了 Clojure 和 ClojureScript 中的 clojure.spec。
到目前为止,我发现它最有用的是,在依赖特定格式数据的公共函数中使用规范作为 :pre 和 :post 的守卫。
(defn person-name [person]
{:pre [(s/valid? ::person person)]
:post [(s/valid? string? %)]}
(str (::first-name person) " " (::last-name person)))
这种方法的问题是,我收到了一个java.lang.AssertionError: Assert failed: (s/valid? ::person person),但没有任何关于究竟什么不符合规范的信息。
有人知道如何在:pre 或:post 守卫中获得更好的错误消息?
我知道conform 和explain*,但这对那些:pre 或:post 守卫没有帮助。
【问题讨论】:
标签: clojure clojure.spec