我只是想在 Ruby 中连接多个数组,但找不到令人满意的方法。
示例输入:
foo = [1, 2, 3]
bar = [4, 5, 6]
baz = [7, 8, 9]
预期结果:(不修改现有数组)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
我的实际数组多 大,所以我对有效的解决方案很感兴趣。也可能有三个以上的数组,因此最好使用简短的语法。
到目前为止我尝试了什么
foo + bar + baz
是显而易见的,简洁明了。但它被计算为(foo + bar) + baz
。换句话说:它创建了一个中间数组[1, 2, 3, 4, 5, 6]
,它在整个操作后被丢弃。如 documentation 中所述:repeated use of
+=
on arrays can be quite inefficient[*foo, *bar, *baz]
基本上内联元素,这对于大型数组也不是很有效。在我看来,它也更像是黑客。[foo, bar, baz].flatten(1)
似乎比上面的性能更差。[].concat(foo).concat(bar).concat(baz)
是最快的,但是看起来很麻烦,需要调用多个方法。
这样的基本任务不应该有一个简单的类方法吗?像这样的东西:
Array.concat(foo, bar, baz)
我是否漏掉了一些明显的东西?
最佳答案
如果您已经确定多重连接是最快的方法,您可以使用 reduce 将其编写得更好:
[foo, bar, baz].reduce([], :concat)
关于arrays - 如何在 Ruby 中有效地连接多个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40510579/