10
Jak mogę iteracyjne nad tablicy ruby i zawsze dwie wartości, bieżący i następny, jak:Iterate parami za pomocą tablicy 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: Chcę sprawdzić, czy tablica jest posortowana , i mając taki iterator, zawsze mogę porównać dwie wartości.
ja nie szukam each_slice
jak w tej kwestii: Converting ruby array to array of consecutive pairs
Tak, to jest dokładnie to, co trzeba! Przejrzałem [Enumerable] (http://ruby-doc.org/core-2.1.0/Enumerable.html) i [Enumerator] (http://ruby-doc.org/core-2.1.0/Enumerator. html), ale tego nie widziałem. Thx – Andi
@Andi i dotyczące twojego przypadku użycia: 'ary.each_cons (2) .all? {| a, b | a <= b} 'zwraca' true', jeśli wartości są posortowane. (niestety, nie możesz użyć 'all? (&: <=)' tutaj ze względu na sposób, w jaki 'each_cons' daje wartości) – Stefan