Ответы:
Вам нужно использовать печать вместо пут. Кроме того, если вы хотите, чтобы точки отображались плавно, необходимо очищать буфер stdout после каждой печати ...
def print_and_flush(str)
print str
$stdout.flush
end
100.times do
print_and_flush "."
sleep 1
end
Редактировать: я просто изучал причины, по которым флеш отвечал на комментарий @ rubyprince, и понял, что это можно немного исправить, просто используя $stdout.sync = true
...
$stdout.sync = true
100.times do
print "."
sleep 1
end
print
его самостоятельно, он может появляться блоками, потому что он может храниться в буфере, а не записываться сразу (я не знаю точно, почему). Это также может зависеть от ОС.
sync
- это перебор для вывода одной строки. Тогда, если ваше приложение выдает много, это будет медленнее.
$stdout.flush
действительно нужно? .. Я использую Ruby 1.8.7, и яprint