Clojure中使用Prismatic/schema的函数验证

Clojure中使用Prismatic/schema的函数验证,clojure,plumatic-schema,Clojure,Plumatic Schema,关于使用验证函数,我有一个非常简单的问题。我有一个映射的模式,该模式有一个键,其值是一个函数,该函数将Barschema作为其单个参数,并返回任何内容(用于副作用): (需要“[schema.core:as s]” (定义栏{:baz s/Int}) (def操作:??) (def Foo{:action action}) 问题是,我如何定义动作?我试过这个: (需要“[schema.macros:as sm]” (def动作(sm/=>s/任何杆)) 这看起来很有希望,但我不能让它通过验证

关于使用验证函数,我有一个非常简单的问题。我有一个映射的模式,该模式有一个键,其值是一个函数,该函数将
Bar
schema作为其单个参数,并返回任何内容(用于副作用):

(需要“[schema.core:as s]”
(定义栏{:baz s/Int})
(def操作:??)
(def Foo{:action action})
问题是,我如何定义动作?我试过这个:

(需要“[schema.macros:as sm]”
(def动作(sm/=>s/任何杆))
这看起来很有希望,但我不能让它通过验证:

(s/explain动作)
;=> (=>Any{:baz Int})
;; 这应该失败
(s/validate Foo{:操作:一切正常})
;=> {:行动:一切顺利}
我做错了什么

我在中阅读了和测试,但我不知道如何执行此操作。

我发现:

所以它会是这样的:

(def Action (s/make-fn-schema s/Any [[Bar]]))
尽管如此,文件中确实指出:

目前,功能模式纯粹是描述性的;它们针对任何函数进行验证,而不管实际的输入和输出类型


好的,这很有道理。无论如何,创建它们的模式很好,因为将来可能强制执行的描述性代码具有很大的价值。感谢您仔细阅读代码!