我将如何为以下模式 defrecord 的 extra-validator-fn 中的每个检查分配一个谓词:
(s/defrecord Item
[type :- (s/enum :solid :liquid)
unit :- (s/enum :kg :ml)]
(s/fn [{:as this :keys [type unit]}]
(or (and (= type :solid) (= unit :kg))
(and (= type :liquid) (= unit :ml)))))
在此示例中,额外的验证会引发异常:
(s/validate Item (map->Item {:type :solid :unit :ml}))
这里写着:(not (passes-extra-validation? a-apriori.cli.core.Item))
但是,我希望它阅读:(not ('invalid-unit-for-type a-apriori.cli.core.Item))