2011-05-23 115 views
2

我正在使用ruby 1.8.5,而数组的each_slice()方法不起作用。在Ruby 1.8.5中是否存在Array#each_slice()的等价物?

我的代码是这样的:

array.each_slice(3) do |name,age,sex| ..... end 

有没有实现我的旧版本红宝石相同的功能的任何其他方式。

+0

@the铁皮人:什么是错的红宝石1.8标签? – 2011-05-24 00:08:04

回答

5

烘烤自己:

module Enumerable 
    def each_slice(n) 
    res = [] 
    self.each do |el| 
     res << el 
     if res.size == n then 
     yield res.dup 
     res.clear 
     end 
    end 
    yield res.dup unless res.empty? 
    end 
end 
+0

真棒..这真的很棒..非常感谢你.. – sundar 2011-05-23 10:43:46

0

我没有得到1.8.5,但是你可以试试这个

0.step(array.size, 3) do |i| 
    name, age, sex = array[i], array[i+1], array[i+2] 
    ... 
end 
+0

非常感谢你的回复。在上面的代码中,比如说如果没有。的元素是3,它工作正常的一次迭代,但在第二次和第三次迭代,名称,年龄,性别返回零... – sundar 2011-05-23 10:26:02

+0

@floor:嘿这工程0.step(array.size/3,3)做|我| .. end非常感谢你.. – sundar 2011-05-23 10:33:14

相关问题