Array和Enumerable之间有什么关系?

时间:2015-01-05 14:39:20

标签: ruby arrays

Array没有sort_by; Enumerable拥有它。这是如何工作的?

%w[aa aaaa aaa].sort_by{|item| item.length} #=> ['aa','aaa','aaaa']

这不是必须抛出undefined method sort_by之类的错误吗? ArrayEnumerable之间的关系是什么?

3 个答案:

答案 0 :(得分:3)

Array类包含Enumerable模块。您可以在左侧的文档中看到“包含的模块”。

答案 1 :(得分:2)

Enumerable混合到Array类中:Enumerable定义的所有方法都可用于Ruby数组。

Array.ancestors # => [Array, Enumerable, Object, Kernel, BasicObject]

答案 2 :(得分:0)

这称为继承。如果在对象的类中找不到某个方法,那么Ruby会在祖先链上走,直到找到它为止。

Array继承自Enumerable(更准确地说,混合 Enumerable,这是一种继承形式。)