如何在Ruby数组的所有元素之间插入一个新元素?

Jus*_*ner 6 ruby arrays

我有一个数组,并希望在所有元素之间插入一个新元素,就像join方法一样.例如,我有

[1, [], "333"]
Run Code Online (Sandbox Code Playgroud)

而我需要的是

[1, {}, [], {}, "333"]
Run Code Online (Sandbox Code Playgroud)

请注意,在所有元素之间插入了一个新的空哈希.

编辑:目前我所拥有的是:

irb(main):028:0> a = [1, [], "333"]
=> [1, [], "333"]
irb(main):029:0> a = a.inject([]){|x, y| x << y; x << {}; x}
=> [1, {}, [], {}, "333", {}]
irb(main):030:0> a.pop
=> {}
irb(main):031:0> a
=> [1, {}, [], {}, "333"]
irb(main):032:0>
Run Code Online (Sandbox Code Playgroud)

我想知道最好的方法.

tok*_*and 14

[1, 2, 3].flat_map { |x| [x, :a] }[0...-1]
#=> [1, :a, 2, :a, 3]
Run Code Online (Sandbox Code Playgroud)

仅供参考,该功能称为散布(至少在Haskell中).

[更新]如果要避免切片(创建数组的副本):

[1, 2, 3].flat_map { |x| [x, :a] }.tap(&:pop)
#=> [1, :a, 2, :a, 3]
Run Code Online (Sandbox Code Playgroud)