私は、マップからキーを削除する機能を持っている:マップから複数のキーを削除するにはどうすればよいですか?
(defn remove-key [key map]
(into {}
(remove (fn [[k v]] (#{key} k))
map)))
(remove-key :foo {:foo 1 :bar 2 :baz 3})
私は複数のキーを使用して、この機能を適用するにはどうすればよいですか?
(remove-keys [:foo :bar] {:foo 1 :bar 2 :baz 3})
私はloop ... recurを使用して実装しています。 Clojureでこれを行うもっと慣用的な方法がありますか?
(defn remove-keys [keys map]
(loop [keys keys
map map]
(if (empty? keys)
map
(recur (rest keys) (remove-key (first keys) map)))))
Clojureには、関数呼び出しのベクトルを "爆発させる"方法がありませんか? ala Pythonの '* list'? – john2x
@ john2x、 'apply'はそれを正確に行います。つまり、 '(f foo bar bazを適用する)'は、Pythonの 'f(foo bar * baz)'に相当します。 –