2011-03-03 15 views
18

Ruby 1.9+ kullanarak bir dizinin her n öğesini (ör. Altı) nasıl seçilir? Örnek: elemanların her biri dilim içinDizinin her n öğelerini alın

a = [0, 1, 2, 3, 4, ... , 33] 
# solution 
# => [[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11], ... ] 

cevap

33

Enumerable#each_slice

dolaşır verilen blok. Belirtilen blok değilse, bir numaralayıcı döndürür.

ör .:

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

Kullanımı için:

irb(main):002:0> a = Array(1..33) 
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33] 
irb(main):003:0> a.each_slice(5) # no good 
=> #<Enumerable::Enumerator:0x47ae6e8> 
irb(main):004:0> a.each_slice(5).to_a # good 
=> [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33]] 
+0

teşekkür! Enumerable iyidir! – akrisanov

+0

Güzel! Bunun için tam olarak bakıyordum! – Anwar