2016-04-15 20 views
1

我想獲得下一n號碼使用Ruby的枚舉元素,這一點:如何使用Ruby枚舉器獲取下n個元素?

a = [1, 2, 3, 4, 5, 6] 
enum = a.each 
enum.next(2) # expecting [1, 2] 
enum.next(2) # expecting [3, 4] 

#next不支持。有沒有另外一種方法可以做到這一點? 或我該怎麼辦?

Ruby的正確方法是什麼?

回答

5

您可以使用take方法

enum.take(2) 

如果你需要兩個元素的片,你可以這樣做:

e = enum.each_slice(2) 
p e.next 
#=> [1, 2] 
p e.next 
#=> [3, 4] 
+1

但是這一個總是返回第2.我錯了嗎? –

+0

@ p.matsinopoulos什麼是確切的要求?你是否希望檢索每2個元素或從你最後離開枚舉的地方檢索任意數量的元素? –

1
a = [1, 2, 3, 4, 5, 6] 
enum = a.dup 
enum.shift(2) # => [1, 2] 
enum.shift(2) # => [3, 4]