我想返回一个哈希映射,像这样:定义的Clojure哈希映射,而无需复制令牌
(fn [foo bar] {:foo foo :bar bar})
是否有可能做,没有重复的名字?怎么样let
东西让这一点:
(let [{:keys [foo bar]} args]
(...))
我想返回一个哈希映射,像这样:定义的Clojure哈希映射,而无需复制令牌
(fn [foo bar] {:foo foo :bar bar})
是否有可能做,没有重复的名字?怎么样let
东西让这一点:
(let [{:keys [foo bar]} args]
(...))
宏:
(defmacro some-hash-thing [& vals]
(zipmap (map keyword vals) vals))
而且在使用中:
(let [a 4, b 5]
(some-hash-thing b a))
;; => {:a 4, :b 5}
我建议从@noisesmith中窃取名字回答:'as-keymap'和'names'好得多。 – Shepmaster
语法引用无引号是多余的 - 它们相互抵消。 –
感谢您指出,@ A.Webb。显然,我没有尽我所能地从我所有的REPL实验中清理它。我编辑过,以反映这一点。 – Shepmaster
(defmacro as-keymap [& names] `(conj {} [email protected](map (juxt keyword symbol) names)))
参见http://stackoverflow.com/q/20913319/1756702 –