如何在clojure中使用schema.core/enum?

如何在clojure中使用schema.core/enum?,clojure,enums,Clojure,Enums,给定一个由prismaticschema.core/enum生成的枚举,假设: (def myenumtype (schema.core/enum "a" "b" "c")) 如何为特定枚举项设置另一个def?这里我想将e设置为“a”枚举项 (def e (??? myenumtype)) 如何将其与特定枚举进行比较?这里我想检查e是否等于“a”枚举类型 (= e ((??? "a") myenumtype)) 我认为你误解了模式的工作原理。您不是在创建枚举类型,而是在创建一个验证器,用

给定一个由prismatic
schema.core/enum
生成的枚举,假设:

(def myenumtype (schema.core/enum "a" "b" "c"))
如何为特定枚举项设置另一个def?这里我想将
e
设置为“a”枚举项

(def e (???  myenumtype))
如何将其与特定枚举进行比较?这里我想检查
e
是否等于
“a”
枚举类型

(= e ((??? "a") myenumtype))

我认为你误解了模式的工作原理。您不是在创建枚举类型,而是在创建一个验证器,用于检查特定值是否等于某个枚举值

在您的情况下,您需要做的只是:

(def e "a")
下面是一个REPL会话示例:

user=> (schema.core/validate (schema.core/enum "a" "b" "c") "a")
"a"
=> (schema.core/validate (schema.core/enum "a" "b" "c") "z")
clojure.lang.ExceptionInfo: Value does not match schema: (not (#{"a" "b" "c"} "z"))