Mam metodę, która przechodzi przez pętlę - chcę, aby wyświetlała znak „.” każdą pętlę, więc mogę to zobaczyć w konsoli. jednak, gdy używam, na końcu każdego umieszcza podział wiersza puts "."
.
Czy istnieje sposób, aby miał po prostu ciągłą linię?
Musisz użyć print zamiast puts. Ponadto, jeśli chcesz, aby kropki wyglądały gładko, musisz opróżnić bufor stdout po każdym wydruku ...
def print_and_flush(str)
print str
$stdout.flush
end
100.times do
print_and_flush "."
sleep 1
end
Edycja: właśnie szukałem przyczyny koloru, aby odpowiedzieć na komentarz @ rubyprince, i zdałem sobie sprawę, że można to trochę wyczyścić, po prostu używając $stdout.sync = true
...
$stdout.sync = true
100.times do
print "."
sleep 1
end
$stdout.flush
naprawdę potrzebne? .. Używam Rubiego 1.8.7 i zrobiłem rzeczy tylko zprint
i nie miałem żadnych problemów ..print
go sam, może wyjść w blokach, ponieważ może być przechowywany w buforze, zamiast być zapisywany od razu (nie wiem dokładnie dlaczego). Może to być również specyficzne dla systemu operacyjnego.sync
to przesada, aby wyprowadzić jeden ciąg. Jeśli aplikacja generuje dużo, będzie wolniejsza.