如何在Ruby中有效地连接多个阵列?

斯特凡

我只想在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在R中有效地联接具有多个主键的表?

如何在熊猫中有效地加入/合并/连接大数据框?

如何在 Linq 中有效地进行内部连接和填充属性?

如何在 C++ 中有效地进行字符串连接?

如何在JavaScript中有效地组合多个Maybe monad?

如何在Rails中有效地更新多个实例

如何在C#中有效地并行执行多个异步调用?

如何在Dask中有效地从DataFrame转到多个Series?

如何在Python中有效地计算多个文档中的双字母组

如何在python中有效地根据多个条件拆分文本?

如何在Isabelle / Isar中有效地证明具有多个变量的存在命题?

如何在Cloud9 IDE上的Ruby on Rails项目中有效地跟踪代码的总数?

如何在Python中有效地在多个线程和进程之间共享数据?

如何在Python中有效地将同一操作应用于多个变量?

如何有效地将阵列旋转±180°?

如何在 Matlab 中有效地计算单个有限差分?

如何在R中有效地附加列表的所有元素

如何在带有短句的大型数据集中有效地使用spacy?

如何在Rails中有效地对模型进行评分并获取其平均评分

如何在Java中有效地合并两个列表?

如何在Java中有效地洗牌2D名单?

如何在python中有效地搜索列表

如何在python中有效地搜索列表?

如何在python中有效地将字典中的值分组

如何在python中有效地对列表进行分类

如何在Go中有效地串联字符串

如何在Unity中有效地对很多RGB颜色进行排序

如何在Julia中有效地初始化巨大的稀疏数组?

如何在Haskell中有效地写入大文件