Я пытаюсь изучить некоторые рубины. Представьте, что я зацикливаюсь и выполняю длительный процесс, и в этом процессе я хочу получить прядильщик столько, сколько необходимо.Бесконечные доходности от итератора
Так что я мог бы сделать:
a=['|','/','-','\\']
aNow=0
# ... skip setup a big loop
print a[aNow]
aNow += 1
aNow = 0 if aNow == a.length
# ... do next step of process
print "\b"
Но я думал, что будет чище сделать:
def spinChar
a=['|','/','-','\\']
a.cycle{|x| yield x}
end
# ... skip setup a big loop
print spinChar
# ... do next step of process
print "\b"
Конечно вызов spinChar хочет блок. Если я дам ему блок, он будет вешать бесконечно.
Как я могу получить только следующую информацию этого блока?
Генераторы болезненно медленны. Ruby 1.9 имеет волокна, которые могут делать примерно то же самое, но быстро. – vava
http://stackoverflow.com/a/14894334/1698467 - какое название этого решения? 'spinner clos'? – skywinder