【问题标题】:Is there an equivalent of Array#each_slice() in Ruby 1.8.5?Ruby 1.8.5 中是否有 Array#each_slice() 的等价物?
【发布时间】:2011-08-31 00:54:09
【问题描述】:

我使用的是 ruby​​ 1.8.5,但数组的 each_slice() 方法不起作用。

我的代码是这样的:

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

有没有其他方法可以在我的旧版 ruby​​ 中实现相同的功能。

【问题讨论】:

  • @the Tin Man:ruby-1.8 标签出了什么问题?

标签: ruby ruby-1.8


【解决方案1】:

自己做:

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

【讨论】:

    【解决方案2】:

    这个人

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

    发现你可以

    require 'enumerator'
    

    它可以工作

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 非常感谢您的回复。在上面的代码中,例如如果没有。元素数为 3,一次迭代可以正常工作,但在第二次和第三次迭代中,name,age,sex 返回 nil...
      【解决方案4】:

      我自己没用过,但考虑使用backports gem。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-20
        • 1970-01-01
        • 2013-06-16
        • 2019-03-11
        • 2014-03-08
        • 1970-01-01
        • 2018-08-26
        相关资源
        最近更新 更多