Скажем, у меня есть перечисление Java. Например:
public enum Suits {CLUBS, DIAMONDS, HEARTS, SPADES};
Обычно я могу сделать что-то в тайне с этим перечислением, например:
(defn do-something []
(let [s Suits/DIAMONDS] (...)))
Но я хочу написать функцию clojure, которая позволит вызывающей стороне указать, какой экземпляр enum использовать:
(defn do-something-parameterized [suit]
(let [s Suits/suit] (...)))
Идея состоит в том, чтобы позволить вызывающему пройти в "DIAMONDS"
и иметь экземпляр enum DIAMONDS
, связанный с s
в let
.
Я мог бы сопоставить cond
с параметром, но это кажется более грубым, чем необходимо. Я полагаю, я мог бы также использовать макрос для создания Suits/
добавленного к suit
. Это способ сделать это или есть немакро-способ, который мне не хватает?