定义clojure哈希映射而不重复令牌

时间:2014-01-25 21:54:02

标签: clojure

我想像这样返回一个哈希映射:

(fn [foo bar] {:foo foo :bar bar})

有可能不重复这些名字吗?类似于let允许这样的事情:

(let [{:keys [foo bar]} args]
   (...))

2 个答案:

答案 0 :(得分:3)

宏:

(defmacro some-hash-thing [& vals]
  (zipmap (map keyword vals) vals))

并在使用中:

(let [a 4, b 5]
  (some-hash-thing b a))
;; => {:a 4, :b 5}

答案 1 :(得分:3)

(defmacro as-keymap [& names] `(conj {} ~@(map (juxt keyword symbol) names)))