在ruby中列出实现?

时间:2011-08-20 01:09:16

标签: ruby arrays performance list

我对Ruby中对Array类的理解有点挣扎。我在谷歌上看过 一个Array类实际上更像是一个列表,但我似乎无法找到它实际上是如何工作的。

我真的很关心性能问题,因为我必须处理大型排序列表,以及 我不想跨越整个数组来为它添加单个元素。

所以我想知道是否有任何真正的和列表的清晰实现(例如在caml中),我也在寻找关于如何实现Array方法的良好文档,关于优化很重要。

谢谢!

1 个答案:

答案 0 :(得分:13)

Ruby数组提供完整的列表界面:

  • push/<<用于在末尾添加元素
  • each为列表遍历提供了一个迭代器
  • sort允许您使用自定义比较器的可选块对项目进行排序
  • ...

所以没有明显的需要有一个特殊的List类或模块 - 以Java为例,如果我们一直需要ArrayList,我们最终会使用List因为它给了我们良好的性能和通过索引访问元素的额外好处。所以Ruby(类似于其他语言,如Python,PHP或Lua)通过提供三种类型 - ArrayHashSet来尝试简化集合类型。具有丰富的界面,可以轻松模拟其他集合类型,如List,Queue或Deque等。

如果您想了解有关实施的详细信息,我建议您只需下载Ruby源并调查相应的文件(对于MRI,它是顶级目录中的array.c)。