ruby - 为什么 Enumerable 在 Ruby 中没有长度属性?

标签 ruby enumerable

至少在 Ruby 1.9.3 中,Enumerable对象没有 length 属性。这是为什么?

最佳答案

Enumerable 具有 count方法,通常是枚举的直观“长度”。

但为什么不叫它“长度”呢?好吧,因为它的运作方式非常不同。在 Ruby 的内置数据结构中,如 ArrayHashlength 只是检索数据结构的预先计算的大小。它应该总是立即返回。

然而,对于 Enumerable#count,它无法知道它在哪种结构上运行,因此没有快速、巧妙的方法来获取枚举的大小(这是因为 Enumerable 是一个模块,可以包含在任何类中)。它获得枚举大小的唯一方法是实际枚举它并在进行时进行计数。对于无限枚举,count 将(适本地)永远循环并且永不返回。

关于ruby - 为什么 Enumerable 在 Ruby 中没有长度属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28839037/

相关文章:

ruby-on-rails - 测试流程(交叉 Controller )的最佳方法是什么?

java - 通用枚举到可迭代转换器

arrays - Ruby:如何从数组内的整数中删除特定数字?

c# - 为什么这个 IEnumerable 扩展方法比另一个(更简单的)扩展方法(只迭代输入)慢得多?

ruby - 两次分析相同的搜索字段,在ElasticSearch中的子字段上返回0个结果

ruby-on-rails - gem install sqlite3 给出错误 - sqlite3.h 丢失

c# - 枚举多次的 .Net 方法应该接受哪种类型的集合作为参数?

javascript 属性不可枚举仍然由 for... 在中找到

ruby - 在 Ruby 中使用 Person 类时遇到问题

ruby - 在 Ruby 中测量时间的惯用方法是什么?