ruby数组循环始终配对

Raf*_*mid 10 ruby arrays loops

我有以下数组:

a = ['sda', 'sdb', 'sdc', 'sdd']
Run Code Online (Sandbox Code Playgroud)

现在我想循环遍历这些条目,但总是有两个元素.我现在这样做如下:

while b = a.shift(2)
  # b is now ['sda', 'sdb'] or ['sdc', 'sdd']
end
Run Code Online (Sandbox Code Playgroud)

这感觉有些不对,有没有更好的方法呢?有没有办法轻松搞定[['sda', 'sdb'], ['sdc', 'sdd']]

我阅读http://www.ruby-doc.org/core-1.9.3/Array.html,但我找不到有用的东西......

Ash*_*she 19

您可能想要查看,Enumerable包括在内Array.

你想要的方法是Enumerable#each_slice,从可枚举的元素中反复得出给定的元素数量(或者如果最后没有那么多,则更少):

a = ['sda', 'sdb', 'sdc', 'sdd']
a.each_slice(2) do |b|
    p b
end
Run Code Online (Sandbox Code Playgroud)

产量:

$ ruby slices.rb 
["sda", "sdb"]
["sdc", "sdd"]
$
Run Code Online (Sandbox Code Playgroud)