我正在尝试在使用可选参数的函数的前提条件中使用Prismaticschema.core/maybe
,但是当我调用函数时opts
它似乎总是抛出一个no :AssertionError
opts
(require '[schema.core :as schema])
(defn foo [& modules]
{:pre [(schema/validate (schema/maybe [(schema/enum :foo :bar)]) opts)]}
:yay)
(foo :foo)
;=> :yay
(foo :foo :bar)
;=> :yay
(foo)
;=> AssertionError Assert failed: (schema/validate (schema/maybe [(schema/enum :foo :bar)]) modules) user/foo (form-init3808809389777994177.clj:1)
有趣的是,这按预期工作:
(schema/validate (schema/maybe [(schema/enum :foo :bar)]) nil)
;=> nil
我在macroexpand
上用过defn
,但那里没有什么不寻常的地方。
我当然可以用一个先决条件来解决这个问题