例如,我有一个
arr = [1,2,3,4]
如果我致电arr.each
,我会访问:
1
2
3
4
但我想要
1 2
2 3
3 4
内置功能可以吗?如果没有,最佳做法是什么?
另一个问题:如果我想要1 2
和3 4
?
答案 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
(示例直接来自文档)。