0
考慮以下幾點:我怎樣才能把地圖輸出成一個單一的集合
user> (map (fn [x] (map #(* x %) '(1 2))) '(2 3))
((2 4) (3 6))
Clojure中的我怎麼能做出改變這個習慣用法,這樣輸出變爲:
(2 4 3 6)
我使用的列表來試試,但任何收集都沒問題。
考慮以下幾點:我怎樣才能把地圖輸出成一個單一的集合
user> (map (fn [x] (map #(* x %) '(1 2))) '(2 3))
((2 4) (3 6))
Clojure中的我怎麼能做出改變這個習慣用法,這樣輸出變爲:
(2 4 3 6)
我使用的列表來試試,但任何收集都沒問題。
(mapcat (fn [x] (map #(* x %) '(1 2))) '(2 3))
這是簡寫:
(apply concat (map (fn [x] (map #(* x %) '(1 2))) '(2 3)))
concat
會連接在一起的集合爲一個序列。使用apply
調用它可以讓您傳遞要並置的集合集合。
賈斯汀做我可能會在這裏使用mapcat
,但在許多類似的案件for
是建設集一個偉大的工具。舉例來說,我覺得這是寫你的函數一個非常清晰的方式:
repl-1=> (for [x '(2 3)
repl-1=* factor '(1 2)]
repl-1=* (* x factor))
(2 4 3 6)