【问题标题】:Iterate pairwise through a ruby array [duplicate]通过ruby数组成对迭代[重复]
【发布时间】:2016-10-24 08:42:15
【问题描述】:

如何遍历 ruby​​ 数组并始终获得两个值,当前值和下一个值,例如:

[1,2,3,4,5,6].pairwise do |a,b|
  # a=1, b=2 in first iteration
  # a=2, b=3 in second iteration
  # a=3, b=4 in third iteration
  # ...
  # a=5, b=6 in last iteration
end

我的用例:我想测试一个数组是否已排序,并且通过使用这样的迭代器,我总是可以比较两个值。

我不是在搜索each_slice,就像在这个问题中一样:Converting ruby array to array of consecutive pairs

【问题讨论】:

    标签: arrays ruby iterator


    【解决方案1】:

    您正在寻找each_cons:

    (1..6).each_cons(2) { |a, b| p a: a, b: b }
    # {:a=>1, :b=>2}
    # {:a=>2, :b=>3}
    # {:a=>3, :b=>4}
    # {:a=>4, :b=>5}
    # {:a=>5, :b=>6}
    

    【讨论】:

    • 是的,这正是我需要的!我浏览了EnumerableEnumerator,但没有看到这个。谢谢
    • @Andi 和关于您的用例:ary.each_cons(2).all? { |a, b| a <= b } 返回 true 如果值已排序。 (不幸的是,由于each_cons 产生值的方式,您不能在此处使用all?(&:<=)
    猜你喜欢
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 2021-05-20
    • 2014-07-01
    • 2012-12-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多