【发布时间】:2020-04-15 17:17:07
【问题描述】:
运行explain-data 和valid? 之间是否存在显着的性能差异。
例如,我有这个代码
(let [is-valid? (spec/valid? ::SpecitySpec the-map)
_ (when-not is-valid?
(throw (ex-info "the-map doesn't match spec"
{:explain-data (spec/explain-data ::SpecitySpec the-map)})))])
如果是happy path,那么它只会运行valid?。
不过,为简洁起见,我的偏好是:
(let [explain-data (spec/explain-data ::SpecitySpec the-map)
_ (when explain-data
(throw (ex-info "the-map doesn't match spec"
{:explain-data explain-data}))
但是,如果对 explain-data 的性能影响更大,那么我认为第一个示例会是最好的。
【问题讨论】:
标签: clojure clojure.spec