1
變量當我把這個函數傳遞分發列表項目Clojure中
(into []
(map #(+ %1 %2)
[1 2]
[5 6]))
我得到這樣的結果:[6 8]
我應該怎麼做來得到這個:[6 7 7 8]
同時保持這#(+ %1 %2)
?
看起來像map
在這種情況下不是正確的功能。
變量當我把這個函數傳遞分發列表項目Clojure中
(into []
(map #(+ %1 %2)
[1 2]
[5 6]))
我得到這樣的結果:[6 8]
我應該怎麼做來得到這個:[6 7 7 8]
同時保持這#(+ %1 %2)
?
看起來像map
在這種情況下不是正確的功能。
使用for
當你想要一個笛卡爾乘積:
user=> (for [x [1 2] y [5 6]]
#_=> (+ x y))
(6 7 7 8)
for
是一種選擇亞歷克斯回答表演。 map
也可以使用(與mapcat
),如下圖所示:
user=> (mapcat #(map (partial + %1) [5 6]) [1 2])
(6 7 7 8)
在什麼情況下你會使用'mapcat' /'在map''for'? – leontalbot 2013-02-26 03:13:27
'for'是一個宏,而'mapcat'和'map'是函數,所以你不能在函數組合等許多場景中使用'for' – Ankur 2013-02-26 04:33:44