2011-11-03 72 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(示例直接來自文檔)。