Array
没有sort_by
; Enumerable
拥有它。这是如何工作的?
%w[aa aaaa aaa].sort_by{|item| item.length} #=> ['aa','aaa','aaaa']
这不是必须抛出undefined method sort_by
之类的错误吗? Array
和Enumerable
之间的关系是什么?
答案 0 :(得分:3)
Array
类包含Enumerable
模块。您可以在左侧的文档中看到“包含的模块”。
答案 1 :(得分:2)
Enumerable
混合到Array
类中:Enumerable定义的所有方法都可用于Ruby数组。
Array.ancestors # => [Array, Enumerable, Object, Kernel, BasicObject]
答案 2 :(得分:0)
这称为继承。如果在对象的类中找不到某个方法,那么Ruby会在祖先链上走,直到找到它为止。
Array
继承自Enumerable
(更准确地说,混合 Enumerable
,这是一种继承形式。)