【发布时间】:2020-06-16 01:05:32
【问题描述】:
我在 Clojure 中有一个函数,它接受一个 2 元素向量作为参数:
(defn influence [[school value]])
我想使用我已注册的现有规范为该函数的参数编写一个规范:
(s/fdef influence :args (s/cat :arg (s/cat :school ::school, :value ::value))
但是,这不起作用,嵌套的s/cat 调用在顶层运行,并将::school 的规范应用于整个参数列表。还有一个函数叫做s/tuple,可能建议你可以这样做
(s/fdef ->influence :args (s/cat :influence (s/tuple ::school ::value)))
但这也行不通。 Spec 似乎以某种方式感到困惑并尝试使 spec 名称 符合规范:
val: :my.ns/school fails spec: :my.ns/school at: [:args :school] predicate...
【问题讨论】:
标签: clojure clojure.spec