【发布时间】:2015-05-04 12:44:57
【问题描述】:
至少在 Ruby 1.9.3 中,Enumerable 对象没有length 属性。这是为什么呢?
【问题讨论】:
-
没有“可枚举类”。 “任何 Enumerable 类”是指混合了
Enumerable模块的任何类吗?这样的类(和其他类)有一个length(又名size)方法。 -
这里有
Enumerable#count。 -
@ChrisHeald 的回答提醒我,在我说“这样的类有一个
length方法的地方,我没有提到我指的是内置类,但即便如此我现在也不确定. 有谁知道没有length方法的混入Enumerable的内置类? -
谢谢,@Max。我认为有不少(例如,
Integer、Numerica、Proc、CSV、Matrix),也许定义length的类是例外而不是规则。 -
值得注意的是,并不是所有的枚举都是有序的。例如,
Set是可枚举的,但不是有序的。在集合上调用#sort仍然有意义的原因是,返回值 是有序的(它是Array,正如Enumerable的文档所示)。
标签: ruby enumerable