【问题标题】:How can I get the next n number of elements using a Ruby enumerator?如何使用 Ruby 枚举器获取下一个 n 个元素?
【发布时间】:2016-04-15 10:44:07
【问题描述】:

我正在尝试使用 Ruby 枚举器获取下一个 n 元素数,使用以下代码:

a = [1, 2, 3, 4, 5, 6]
enum = a.each
enum.next(2) # expecting [1, 2]
enum.next(2) # expecting [3, 4]

但是#next 不支持。还有其他方法可以做到吗? 还是我应该做?

正确的 Ruby 方法是什么?

【问题讨论】:

    标签: ruby enumerators


    【解决方案1】:

    你可以使用take方法

    enum.take(2)
    

    如果你需要两个元素的切片,你可以这样做:

    e = enum.each_slice(2)
    p e.next
    #=> [1, 2]
    p e.next
    #=> [3, 4]
    

    【讨论】:

    • 但是这个总是返回第一个 2。我错了吗?
    • @p.matsinopoulos 确切的要求是什么?您希望每 2 个元素检索一次,还是从您上次离开枚举的点开始检索任意数量的元素?
    【解决方案2】:
    a = [1, 2, 3, 4, 5, 6]
    enum = a.dup
    enum.shift(2) # => [1, 2]
    enum.shift(2) # => [3, 4]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-23
      • 2021-04-29
      • 2016-07-27
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2010-10-13
      相关资源
      最近更新 更多