ruby - 为什么要返回一个枚举器?

标签 ruby arrays enumerator

我很好奇为什么 ruby​​ 返回一个 Enumerator 而不是一个 Array,而 Array 似乎是一个显而易见的选择。例如:

'foo'.class
# => String

大多数人将字符串视为字符数组。

'foo'.chars.class
# => Enumerator

那么为什么 String#chars 返回一个 Enumerable 而不是一个数组呢?我假设有人对此进行了很多思考并决定 Enumerator 更合适,但我不明白为什么。

最佳答案

如果你想要一个数组,调用#to_aEnumerableArray 的区别在于一个是惰性的,另一个是渴望性的。这是良好的旧内存(懒惰)与 cpu(急切)优化。显然他们选择了懒惰,也是因为

str = "foobar"
chrs = str.chars
chrs.to_a # => ["f", "o", "o", "b", "a", "r"]
str.sub!('r', 'z')
chrs.to_a # => ["f", "o", "o", "b", "a", "z"]

关于ruby - 为什么要返回一个枚举器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515710/

相关文章:

mysql - 从 XML stackexchange 转储中提取问答对

ruby-on-rails - 为什么我们需要在这个 Rails try block 中使用问号?

ruby - 如何使用 Mailchimp 的 Gibbon Export API 调用传递过滤器

Objective-c数组

c - 在C中查找数组的长度

Scala:读取 Enumerator[T] 的一些数据并返回剩余的 Enumerator[T]

ruby - 使用 rbenv 在 Mac 上安装 ruby​​ 2.0.0-p195 时出现 OpenSSL 错误

Javascript 自动关闭 HTML 标签?

ruby - 为什么 each_slice with block 和 .map 返回 nil

Ruby 枚举器链接