Как перечислить непрерывные элементы в массиве?
Например, у меня есть
arr = [1,2,3,4]
Если я позвоню arr.each
Я получу доступ к:
1
2
3
4
Но я хочу
1 2
2 3
3 4
Возможно ли это с помощью встроенной функции? Если нет, какова лучшая практика?
Еще один вопрос: если я хочу 1 2
а также 3 4
?
1 ответ
Решение
Возможно, вы захотите взглянуть на each_cons для вашего первого случая:
(1..10).each_cons(3) {|a| p a}
# outputs below
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
[7, 8, 9]
[8, 9, 10]
Для вашего второго случая ( требующего наборов элементов) вы должны использовать each_slice:
(1..10).each_slice(3) {|a| p a}
# outputs below
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]
Любой из этих методов принимает одно целое число, определяющее размер набора, поэтому вы должны указать 2
вместо 3
(примеры прямо из документации).