我只想在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]
,其整个操作后扔掉。如文档中所述:
的重复使用
+=
对阵列可以是相当低效的
[*foo, *bar, *baz]
基本上内联这对于大型阵列非常有效的,无论是元素。它看起来也更像是一个黑客给我。
[foo, bar, baz].flatten(1)
在性能方面,似乎比上述情况还要糟糕。
[].concat(foo).concat(bar).concat(baz)
是最快的,但它看起来笨重,它需要多个方法调用。
不应该有这样的基本任务,一个简单的类方法?就像是:
Array.concat(foo, bar, baz)
我是否缺少明显的东西?
如果您已经确定了多个级联是最快的方法,你可以使用减少写更好:
[foo, bar, baz].reduce([], :concat)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句