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ę?
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ę?
Odpowiedzi:
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
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.
$stdout.flush
naprawdę potrzebne? .. Używam Rubiego 1.8.7 i zrobiłem rzeczy tylko zprint
i nie miałem żadnych problemów ..