9

私は次のシーケンスを持っています

(def a [1 2 3 4])
(def b [10 20 30 40])
(def c [100 200 300 400])

要素ごとにシーケンスを結合したい:

(...  + a b c)

私に与える為に:

[111 222 333 444]

そのための標準機能はありますか? あるいは、そうするための良い慣用的な方法は何ですか?

4

2 に答える 2

15

clojure-1.4.0 以降を使用している場合は、以下を使用できますmapv

user> (mapv + [1 2 3 4] [10 20 30 40] [100 200 300 400])
[111 222 333 444]
于 2012-07-20T00:52:34.517 に答える
14

お探しの機能はmap.

(map + [1 2 3 4] [10 20 30 40] [100 200 300 400])
;=> (111 222 333 444)

map例に示すように、ベクトルではなく、遅延シーケンスを返すことに注意してください。ただし、関数を使用して、レイジー シーケンスを空のベクトルに注ぐことができintoます。

(into [] (map + [1 2 3 4] [10 20 30 40] [100 200 300 400]))
;=> [111 222 333 444]

また、(完全を期すために、別の回答に記載されているように)Clojure 1.4.0+では、ベクトル結果を取得するためにmapv(と同じ引数で)使用できます。map

于 2012-07-20T00:02:00.170 に答える