我很好奇为什么 ruby 返回一个 Enumerator 而不是一个 Array,而 Array 似乎是一个显而易见的选择。例如:
'foo'.class
# => String
大多数人将字符串视为字符数组。
'foo'.chars.class
# => Enumerator
那么为什么 String#chars 返回一个 Enumerable 而不是一个数组呢?我假设有人对此进行了很多思考并决定 Enumerator 更合适,但我不明白为什么。
最佳答案
如果你想要一个数组,调用#to_a
。 Enumerable
和Array
的区别在于一个是惰性的,另一个是渴望性的。这是良好的旧内存(懒惰)与 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/