У меня есть набор объектов, которые необходимо повторить неопределенное количество раз. Это было бы достаточно легко установить, если массив фиксировались:Перечислитель, состоящий из повторяющегося (но изменяющегося) массива
>> enum = ['Start', 'Peak', 'Finish'].cycle
>> enum.first(7)
=> ['Start', 'Peak', 'Finish', 'Start', 'Peak', 'Finish', 'Start']
Но результат я хочу это:
>> enum = <Enumerator magic here>
>> enum.first(7)
=> ['Start Lap 1', 'Peak Lap 1', 'Finish Lap 1', 'Start Lap 2', 'Peak Lap 2', 'Finish Lap 2', 'Start Lap 3']
Похоже, что я должен быть в состоянии начать с (1..Float::INFINITY)
и получить правый результат с #map
или #each
, но мне не повезло. Я знаю, что могу использовать (1..arbitrary_big_number)
и сделать большой массив, но надеясь на ленивое решение.
Заранее спасибо.
Хороший ответ. Вы можете немного очистить его и сделать его более общим: 'loop do (arr_count) .times do y <<" # {cycle_e.next} # {добавлено_слово} # {lap} " конец lap + = 1 конец' – 7stud
Done. Спасибо, братан;) – Ursus
(также уведомляет @ 7stud): Мой вопрос был помечен как дубликат, но я дополнительно обобщил ваш код и представил его в качестве ответа на исходный вопрос [здесь] (http://stackoverflow.com/a/41686275/5961578). Я думаю, что это лучшее решение, чем любой из ответов на этот вопрос. В очередной раз благодарим за помощь! – moveson