我怎样才能把地图输出成一个单一的集合

问题描述:

考虑以下几点:我怎样才能把地图输出成一个单一的集合

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)