鉴于一个由棱柱schema.core/enum
制作的枚举,让我们说:
(def myenumtype (schema.core/enum "a" "b" "c"))
如何为特定的枚举项设置另一个def?在这里,我想将e
设置为" a"枚举项目。
(def e (??? myenumtype))
我如何将其与特定的枚举进行比较?在这里,我想检查e
是否等于"a"
枚举类型。
(= e ((??? "a") myenumtype))
答案 0 :(得分:1)
我认为你误解了Schema是如何工作的。您没有创建枚举类型,而是创建一个验证器来检查特定值是否等于其中一个枚举值。
在您的情况下,您需要做的就是:
(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"))