1
举例来说,我有一个如何枚举数组中的连续元素?
arr = [1,2,3,4]
如果我叫arr.each
,我将访问:
1
2
3
4
但我想
1 2
2 3
3 4
是否有可能内置的功能?如果不是,最佳做法是什么?
另一个问题:如果我想要1 2
和3 4
?
举例来说,我有一个如何枚举数组中的连续元素?
arr = [1,2,3,4]
如果我叫arr.each
,我将访问:
1
2
3
4
但我想
1 2
2 3
3 4
是否有可能内置的功能?如果不是,最佳做法是什么?
另一个问题:如果我想要1 2
和3 4
?
你可能想看看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
(示例直接来自文档)。
标准建议:仔细阅读字符串/数组/可枚举文档:http://www.ruby-doc.org/core-1.9.2/Enumerable.html – tokland