如何枚举数组中的连续元素?

时间:2011-11-03 17:31:50

标签: ruby enumerable

例如,我有一个

arr = [1,2,3,4]

如果我致电arr.each,我会访问:

1
2
3
4

但我想要

1 2
2 3
3 4

内置功能可以吗?如果没有,最佳做法是什么?

另一个问题:如果我想要1 23 4

1 个答案:

答案 0 :(得分:5)

您可能希望在第一个案例中查看each_cons

(1..10).each_cons(3) {|a| p a}
# outputs below
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
[7, 8, 9]
[8, 9, 10]

对于你的第二种情况(想要多组元素),你可以使用each_slice

(1..10).each_slice(3) {|a| p a}
# outputs below
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]

这些方法中的任何一个都接受一个指定集合大小的整数,因此您可以指定2而不是3(示例直接来自文档)。