为什么Enumerable在Ruby中没有length属性?

kdb*_*man 7 ruby enumerable

至少在Ruby 1.9.3中,Enumerable对象没有length属性.

至于我可以告诉大家,什么Enumerable是一组,通过类似的方法证明sortfind_index.

一个集总是有一个定义明确的长度(......对吗?),为什么这不是一个属性?

Max*_*Max 11

Enumerable有这个count方法,通常是枚举的直观"长度".

但为什么不把它称为"长度"?好吧,因为它的运作方式非常不同.在像Ruby的内置数据结构ArrayHash,length只是检索数据结构的预先计算的大小.它应该总是立即返回.

对于Enumerable#count,但是,有没有办法为它知道什么样的结构,它的经营上,因此没有快速,聪明的方法来获得枚举的大小(这是因为Enumerable是一个模块,并且可以被包含在任何类).获取枚举大小的唯一方法是实际枚举它并按计算进行计数.对于无限枚举,count将(适当地)循环永远并且永远不会返回.