的case
醫生說是否可以使用Java枚舉的Clojure案例表單?
與COND和condp,情況下,不固定時間的調度......常量表達式 所有的方式都在的情況下可以接受的。
我想受益於case
的常量調度,以匹配Java枚舉。 Java的switch
語句枚舉效果很好,但做以下Clojure中:在
(defn foo [x]
(case x
java.util.concurrent.TimeUnit/MILLISECONDS "yes!"))
(foo java.util.concurrent.TimeUnit/MILLISECONDS)
結果:IllegalArgumentException No matching clause: MILLISECONDS
正在枚舉不case
支持?難道我做錯了什麼?我必須訴諸於cond
還是有更好的解決方案?
cemerick有寫起來和解決方法這在http://cemerick.com/2010/08/03/enhance-clojures-case-to-evaluate-dispatch-values/ –
謝謝,你們倆!順序解決方案(我在宏中使用這種可讀性並不是問題),cemerick的解決方案運行良好。 – pron
我太過分了:顯然cemerick的情況+不適用於枚舉:'(case + java.util.concurrent.TimeUnit/MINUTES java.util.concurrent.TimeUnit/MINUTES「yes!」); CompilerException java.lang.RuntimeException:不能在代碼中嵌入對象。 (但很明顯,序數解決方案確實如此) – pron