5
我有一个记录,对于这个规范,我想要生成值但确保当前金额不超过最大金额。 简化规范会是这样的:Clojure Spec依赖字段
(s/def ::max-amt (s/and number? #(<= 0 % 1e30)))
(s/def ::cur-amt (s/and number? #(<= 0 % 1e30)))
(s/def ::loan (s/cat :max-amt ::max-amt
:cur-amt ::cur-amt))
我知道我可以在::loan
规范有s/and
但我想是这样的:
(s/def :loan (s/cat :max-amt ::max-amt
;; not a real line:
:cur-amt (s/and ::cur-amt #(< (:cur-amt %) (:max-amt %)))))
这是一种约束的规范可用?
注:我知道我可以用0和1之间的数字,表示小数部分但然后我修改数据至角落找寻适应代码不是其他方式更换CUR-AMT。我不在这里控制实际应用程序中的数据源。