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
。これはそれを行う方法ですか、それとも私が見逃しているマクロ以外の方法はありますか?