在Ruby 1.8.5中是否有等效的Array#each_slice()?

时间:2011-05-23 09:59:10

标签: ruby ruby-1.8

我正在使用ruby 1.8.5,并且数组的each_slice()方法无效。

我的代码类似于:

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

在旧版本的ruby中是否有其他方法可以实现相同的功能。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这家伙

http://tekhne.wordpress.com/2008/02/01/whence-arrayeach_slice/

想通了你可以

require 'enumerator'

并且有效

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我自己没有使用它,但考虑使用backports gem