混合两个向量:[a] 和 [b b] 到 [a b]

Mixing two vectors: [a a] and [b b] to [a b a b]

我怎样才能将两个给定的向量混合成一个新的向量,它以交替的顺序保存它们的值。

(f [a a] [b b]) ; > [a b a b]

我想到了这个:

(flatten (map vector [:a1 :a2] [:b1 :b2]))

但也许有更简单的方法。

您可以使用 interleave:

(interleave [:a :a] [:b :b])

另一种选择:

(apply into (map vector [:a1 :a2] [:b1 :b2]))

interleave 是要走的路。

你可以使用解构:

((fn [[a1 a2] [b1 b2]] [a1 b1 a2 b2]) [1 2] [3 4])
;[1 3 2 4]