2017-03-04 97 views
1

鑑於從棱柱schema.core/enum做一個枚舉,讓我們說:如何在clojure中使用schema.core/enum?

(def myenumtype (schema.core/enum "a" "b" "c")) 

如何設置另一個DEF到一個特定的枚舉項目?在這裏,我想將e設置爲「a」枚舉項。

(def e (??? myenumtype)) 

我該如何將它與一個特定的枚舉進行比較?在這裏我想查看e是否等於"a"枚舉類型。

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

回答

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"))