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
printgo 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.
syncto przesada, aby wyprowadzić jeden ciąg. Jeśli aplikacja generuje dużo, będzie wolniejsza.
$stdout.flushnaprawdę potrzebne? .. Używam Rubiego 1.8.7 i zrobiłem rzeczy tylko zprinti nie miałem żadnych problemów ..