假设我有一个 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
枚举实例绑定s
到let
.
我可以cond
对参数进行匹配,但这似乎比必要的要笨重。我想我也可以使用宏来构造Suits/
添加到suit
. 这是这样做的方式还是我缺少一种非宏观方式?