【发布时间】:2011-11-10 21:35:58
【问题描述】:
假设我有一个 Java 枚举。例如:
public enum Suits {CLUBS, DIAMONDS, HEARTS, SPADES};
通常,我可以像这样在 clojure 中使用该枚举做一些事情:
(defn do-something []
(let [s Suits/DIAMONDS] (...)))
但是,我想编写一个 clojure 函数,允许调用者指定要使用的枚举实例:
(defn do-something-parameterized [suit]
(let [s Suits/suit] (...)))
这个想法是让调用者传入"DIAMONDS",并让DIAMONDS 枚举实例绑定到let 中的s。
我可以对参数进行cond 匹配,但这似乎比必要的要笨重。我想我也可以使用宏来构造Suits/ 添加到suit。这是这样做的方式还是我缺少一种非宏观方式?
【问题讨论】:
标签: clojure clojure-java-interop