1

我将如何为以下模式 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))

4

0 回答 0