Итерации попарно через рубиновый массив

Как я могу перебирать массив 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

My usecase: Я хочу проверить, отсортирован ли массив, и имея итератор, подобный этому, я всегда мог бы сравнить два значения.

Я не ищу each_slice, как в этом вопросе: Преобразование массива ruby ​​в массив последовательных пар

Ответ 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}