Есть ли в Ruby 1.8.5 эквивалент Array # each_slice ()? - PullRequest
2 голосов
/ 23 мая 2011

Я использую ruby ​​1.8.5, а метод each_slice() для массива не работает.

Мой код выглядит примерно так:

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

Есть ли другой способ реализовать ту же функциональность в моей старой версии ruby.

Ответы [ 4 ]

5 голосов
/ 23 мая 2011

Выпекать свои собственные:

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 голос
/ 28 мая 2011

Этот парень

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

разобрался, можно

require 'enumerator'

и все работает

0 голосов
/ 24 мая 2011

Я не использовал его сам, но рассмотрите возможность использования гема backports .

0 голосов
/ 23 мая 2011

У меня нет 1.8.5, но вы можете попробовать это

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