Ruby 迭代器、块与控制流详解
1. 迭代器方法示例
在 Ruby 中,有一些有趣的迭代器方法,如 sequence 、 interleave 和 bundle 。以下是它们的使用示例:
a,b,c = [1,2,3], 4..6, 'a'..'e'
sequence(a,b,c) {|x| print x} # 输出 "123456abcde"
interleave(a,b,c) {|x| print x} # 输出 "14a25b36cde"
bundle(a,b,c) {|x| print x} # 输出 '[1, 4, "a"][2, 5, "b"][3, 6, "c"]'
这里的 bundle 方法和 Enumerable.zip 方法类似。在 Ruby 1.8 中, zip 方法会先将可枚举的参数转换为数组,然后在迭代时使用这些数组。而在 Ruby 1.9 中, zip 方法可以使用外部迭代器,这通常在空间和时间上更高效,并且能够处理无法转换为有限大小数组的无界集合。
2. 迭代与并发修改
Ruby 的核心类集合通常会对实时对象进行迭代,而不是对这些对象的私有副本或“快照”进行迭代。并且,在迭代过程中,它们不会尝试检测或阻止对集合的并发修改。例如:
a
超级会员免费看
订阅专栏 解锁全文
10

被折叠的 条评论
为什么被折叠?



