我有以下数组:
a = ['sda', 'sdb', 'sdc', 'sdd']
现在我想循环遍历这些条目,但总是有两个元素。我现在这样做如下:
while b = a.shift(2)
# b is now ['sda', 'sdb'] or ['sdc', 'sdd']
end
这感觉有点不对,有没有更好的方法呢?有没有办法轻松搞到像[['sda', 'sdb'], ['sdc', 'sdd']]
这样的东西?
我读了http://www.ruby-doc.org/core-1.9.3/Array.html,但我找不到有用的东西......
您可能想要查看Enumerable
,它包含在Array
中。
你想要的方法是Enumerable#each_slice
,它可以从可枚举的元素中反复得出给定的元素数量(如果最后没有那么多则为更少):
a = ['sda', 'sdb', 'sdc', 'sdd']
a.each_slice(2) do |b|
p b
end
产量:
$ ruby slices.rb
["sda", "sdb"]
["sdc", "sdd"]
$