- Learn about Wiki
- Lectures
- Study
- Tips
(defn f [{:keys [a b c] :as all}] [a b c all]) (f {:a 1 :b 2 :c 3}) ;=> [1 2 3]
(defn f [{:keys [a b] different-name :c}] [a b different-name]) (f {:a 1 :b 2 :c 3}) ;=> [1 2 3]
(defn f [{{:keys [a b c]} :d}] [a b c]) (f {:a 1 :b 2 :c 3 :d {:a 10 :b 20 :c 30}}) ;=> [10 20 30]
(defn f [{:keys [a b c] :or {c 99}}] [a b c]) (f {:a 1 :b 2 :c 3}) ;=> [1 2 3] (f {:a 1 :b 2}) ;=> [1 2 99]
(defn f [{:syms [a b c]}] [a b c]) (f {'a 1 'b 2 'c 3}) ;=> [1 2 3]
(defn f [{:strs [a b c]}] [a b c]) (f {'a 1 'b 2 'c 3}) ;=> [1 2 3]
맵 인수분해는 리스트에 대해서도 동작한다.
(let [{:keys [a b]} '("X" "Y" :a 1 :b 2)] [a b]) ;=> [1 2]
(defn f [& {:keys [a b c]}] [a b c]) (f :a 1 :b 2 :c 3) ;=> [1 2 3]