我怎样才能把地图输出成一个单一的集合
问题描述:
考虑以下几点:我怎样才能把地图输出成一个单一的集合
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)