至少在 Ruby 1.9.3 中,Enumerable
对象没有 length
属性。这是为什么?
最佳答案
Enumerable 具有 count
方法,通常是枚举的直观“长度”。
但为什么不叫它“长度”呢?好吧,因为它的运作方式非常不同。在 Ruby 的内置数据结构中,如 Array
和 Hash
,length
只是检索数据结构的预先计算的大小。它应该总是立即返回。
然而,对于 Enumerable#count
,它无法知道它在哪种结构上运行,因此没有快速、巧妙的方法来获取枚举的大小(这是因为 Enumerable
是一个模块,可以包含在任何类中)。它获得枚举大小的唯一方法是实际枚举它并在进行时进行计数。对于无限枚举,count
将(适本地)永远循环并且永不返回。
关于ruby - 为什么 Enumerable 在 Ruby 中没有长度属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28839037/