Я воссоздал реализацию блесны для моей командной строки сценария:Как очистить командную строку кок
class Spinner
GLYPHS = %w[|/– \\ |/– \\]
def render
Thread.new do
while true
GLYPHS.each do |glyph|
print "\r#{glyph}"
sleep 0.10
end
end
end
end
end
Он используется как:
puts "Querying the API..."
@s = Spinner.new
@s.render
# do some stuff, return some data, output it to the command line
puts "All done."
и полученный выход командной строки что-то например
Querying the API...[spinner is spinning here]
\RESULTS
|RESULTS
\RESULTS
|All done.
Когда сценарий закончен, последний глиф остается. Я понимаю, что "\r"
в начале строки печати предназначен для очистки прошлого глифа. Я вручную распечатываю "\r"
, что неинтуитивно и делает код не очень хорошим. Мне нравится, чтобы счетчик не оставил один из своих глифов перед результатом, без необходимости вручную печатать "\r"
перед каждой выходной строкой.
Какова цель определения 'глифы =% ш [|/- \\ |/- \\] 'с двумя циклами? Что изменится, если это будет 'GLYPHS =% w [|/- \\] '? – sawa