[Ruby] Вопрос по итераторам
Dennis Vshivkov
walrus на amur.ru
Вт Дек 7 18:05:54 MSK 2004
On Tue, Dec 07, 2004 at 05:28:07PM +0300, SoNaR wrote:
> красивое решение
> a,_begin,_end,result = [ "a", "b", "b1", "b2", "c", "d" ],0,0,[]
> a.each_index{ |index|
> ( result.push( _begin.._end ) ; _begin = index ) if a[index] !~ Regexp.new("^#{a[_begin]}\d*")
> _end = index
> }
> result.push( _begin.._end )
> p result.map{ |r| a[r].join(" ") }.join(", ")
> Сначала сохраняем индексы, а потом уже собираем строчку.
Ну, вариантов решить частную задачу -- миллион и тележка. Но
вопрос-то стоял о том, как в итераторе (который по сути всего один --
#each) получить следующий элемент не в начале блока. Причём так, чтобы
последующая итерация его нам по новой не всучила (то есть
#each_with_index и т.д. не проходят).
Делал на Continuation -- вообще такой кошмар получается, пальчики
оближешь. :)
--
/Awesome Walrus <walrus на amur.ru>
...Но это битва при закрытых дверях, борьба жизни чёрт знает с чем...
Подробная информация о списке рассылки Ruby