Я пытаюсь напечатать заголовки разделов для сгруппированных элементов в плоском массиве. Мне бы хотелось, чтобы заголовок раздела отображался один раз на группу.
Пример ниже работает, но он выглядит довольно не элегантно для Ruby. Я уверен, что должен быть лучший способ сделать это;)
#!/usr/bin/ruby
foo = [1,1,1,1,2,2,2,3,3]
i = 0;
f = foo[i]
comp = f
while(i < foo.count) do
puts "Section #{f}";
while(f == comp) do
puts f
i += 1
f = foo[i]
end
comp = f
end
Желаемый вывод
Section 1
1
1
1
1
Section 2
2
2
2
Section 3
3
3
Я надеялся, что существуют какие-то методы экземпляра Array#current
или Array#next
, но похоже, что объекты Ruby Array не содержат внутреннего итератора.