Define clojure hash map without duplicating tokens
我想返回一个哈希映射,如下所示:
1 | (fn [foo bar] {:foo foo :bar bar}) |
是否可以在不重复名称的情况下做到这一点?
1 2 | (let [{:keys [foo bar]} args] (...)) |
1 | (defmacro as-keymap [& names] `(conj {} ~@(map (juxt keyword symbol) names))) |
宏:
1 2 | (defmacro some-hash-thing [& vals] (zipmap (map keyword vals) vals)) |
使用中:
1 2 3 | (let [a 4, b 5] (some-hash-thing b a)) ;; => {:a 4, :b 5} |