2011-08-20 107 views
3

我對Ruby中對Array類的理解有點掙扎。我曾在Google 上看到一個Array類實際上更多的是一個列表,但我似乎無法找到它的實際工作方式。紅寶石列表實現?

我真的很關心性能問題,因爲我必須處理大的排序列表,並且我不想跨越整個數組向其添加單個元素。

所以我想知道是否有任何實際和明確的列表實現(例如在caml中),並且我還在尋找關於如何實現Array的方法的優秀文檔,關於優化問題。

謝謝!

+0

如果您真的關心性能,那麼您應該更關心Ruby [benchmark](http://ruby-doc.org/stdlib/libdoc/benchmark/rdoc/index.html),或者使用因爲Ruby語言被設計爲方便而不是快速,所以完全不同的語言。 – maerics

回答

12

一個Ruby的陣列提供了一個完整列表界面:

  • push/<<在年底
  • each添加元素提供了列表遍歷
  • sort讓你的項目有一個可選的塊進行排序的迭代器定製比較器
  • ...

因此,沒有必要擁有特殊的List類或模塊 - 以Java爲例,如果我們始終需要List,我們最終會使用ArrayList,因爲它提供了良好的性能和訪問元素索引的額外好處。因此,Ruby(類似於Python,PHP或Lua等其他語言)嘗試通過提供三種類型(Array,HashSet)來簡化關於集合類型的事情 - 因此具有豐富的接口,可以輕鬆模擬其他集合類型,如List,Queue或Deque等。

如果您想了解有關實施的詳細信息,我建議您簡單地下載Ruby源代碼並調查相應的文件(對於MRI,它是頂層的array.c目錄) 。