【发布时间】:2012-05-17 22:42:09
【问题描述】:
我很好奇为什么 ruby 会返回 Enumerator 而不是 Array,因为 Array 似乎是一个显而易见的选择。例如:
'foo'.class
# => String
大多数人认为 String 是一个字符数组。
'foo'.chars.class
# => Enumerator
那么为什么 String#chars 返回的是 Enumerable 而不是 Array?我假设有人对此进行了深思熟虑,并认为 Enumerator 更合适,但我不明白为什么。
【问题讨论】:
-
您需要一个字符数组用于什么应用程序?也许令人惊讶的是因为您没有以红宝石的方式解决问题......
-
@DGM - 例如,假设我想在字符串中列出唯一字符,这样做会很好:'foo'.chars.uniq 而不是 'foo'.chars.to_a.uniq .我的问题是:强制执行额外的步骤有什么真正的优势吗?
-
@pguardiario(或其他具有编辑能力的用户)请将文本中的另一个 Enumerable 替换为 Enumerator。
-
@gorn - Enumerator 是一个包含 Enumerable mixin 的类。我们说的是同一件事。
-
@pguardiario 这没问题,但是在“那么为什么 String#chars 返回一个 Enumerable ...”这句话中,这是无稽之谈。 String#chars 返回 Enumerator not Enumerable。或者你可以说。 String#chars 返回其类包含 Enumerable 的对象。没关系,但不是很简单。
标签: ruby arrays enumerator