至少在Ruby 1.9.3中,Enumerable
对象没有length
属性。
据我所知,任何事物Enumerable
都是集合,如sort
and方法所证明find_index
。
集合始终具有明确定义的长度(...正确吗?),为什么这不是属性?
Enumerable具有该count
方法,通常是直观的枚举“长度”。
但是为什么不称它为“长度”呢?好吧,因为它的运行方式大不相同。在Ruby中的内置数据结构像Array
和Hash
,length
只是检索数据结构的预先计算的大小。它应该总是立即返回。
对于Enumerable#count
,但是没有办法让它知道正在运行的是哪种结构,因此也没有快速,聪明的方法来获取枚举的大小(这是因为它Enumerable
是一个模块,并且可以包含在任何类中)。它获取枚举大小的唯一方法是实际枚举它并随其计数。对于无限枚举,count
将(适当地)永远循环并且永不返回。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句