2011-11-03 58 views
1

举例来说,我有一个如何枚举数组中的连续元素?

arr = [1,2,3,4] 

如果我叫arr.each,我将访问:

1 
2 
3 
4 

但我想

1 2 
2 3 
3 4 

是否有可能内置的功能?如果不是,最佳做法是什么?

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

+1

标准建议:仔细阅读字符串/数组/可枚举文档:http://www.ruby-doc.org/core-1.9.2/Enumerable.html – tokland

回答

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(示例直接来自文档)。