Uruchomiłem programy wiersza polecenia, które wyprowadzają linię, a następnie aktualizują tę linię chwilę później. Ale z rubinem mogę wydać tylko linię, a potem kolejną.Zapisywanie wcześniejszych wierszy wyjściowych w wierszu polecenia przy użyciu ruby
wyjście Co mam być teraz:
Downloading file:
11MB 294K/s
12MB 307K/s
14MB 294K/s
15MB 301K/s
16MB 300K/s
Done!
I zamiast, chcę to zobaczyć:
Downloading file:
11MB 294K/s
Obserwowani chwilę później przez to:
Downloading file:
16MB 300K/s
Done!
Linia moje wyniki skryptu ruby pokazujące pobrany rozmiar pliku i szybkość transferu byłyby zastępowane za każdym razem zamiast listy zaktualizowane wartości jako zupełnie nowa linia.
Obecnie używam puts
do generowania wyników, co oczywiście nie jest przeznaczone dla tego przypadku. Czy istnieje inna metoda wyjścia, która może osiągnąć ten wynik?
To rozwiązanie nie pokazuje wyjścia, dopóki nie zostanie wyprowadzony znak nowej linii lub program się kończy. Ten przykład, na przykład 'print '123', sleep 5; drukuj "\ r"; print "456" 'nie drukuje niczego na początku, a następnie drukuje" 456 "5 sekund później. Więc niewiele mi to pomaga. –
Dodaj 'STDOUT.flush', aby natychmiast wysłać go do wyjścia. Również zaktualizowałem odpowiedź. – detunized
Ahhhh to ma sens. To naprawione i działa teraz świetnie, dziękuję! –