Raylarda yakutta bir çizgi kesilmeden konsola “koyar” ı nasıl kullanabilirim?


156

Ben bir döngü geçer bir yöntem var - bir "çıktı" istiyorum. her döngüde konsolda görebiliyorum. ancak, her kullandığımda bir satır sonu koyar puts ".".

Sadece sürekli bir çizgiye sahip bir yol varsa?

Yanıtlar:


199

Koymak yerine yazdırmayı kullanmanız gerekir. Ayrıca, noktaların düzgün görünmesini istiyorsanız, her baskıdan sonra stdout tamponunu temizlemeniz gerekir ...

def print_and_flush(str)
  print str
  $stdout.flush
end

100.times do
  print_and_flush "."
  sleep 1
end

Düzenleme: Sadece @ rubyprince'ın yorumunu cevaplamak için floş arkasındaki mantığı bakıyordum ve bu sadece kullanarak biraz temizlenebilir $stdout.sync = true...

$stdout.sync = true

100.times do
  print "."
  sleep 1
end

3
$stdout.flush? Gerçekten gerekli .. Ruby 1.8.7 kullanıyorum ve sadece birlikte şeyler yapmış print.. ve ben hiçbir sorunları vardı
rubyprince

6
Bir ilerleme çubuğu gibi bir şey yapıyorsanız faydalıdır. Sadece printkendi başına kullandığınızda , bloklar halinde ortaya çıkabilir, çünkü hemen yazmak yerine tamponda saklanabilir (tam olarak nedenini bilmiyorum). İşletim sistemine özgü de olabilir.
idlefingers

2
@ Stdout.flush ile denedim ... bunun yerine .sync = true kullanmanın herhangi bir faydası var mı?
Timothy T.

Stdout ayarını syncbir dize çıkışı için bir overkill olduğunu düşünüyorum . Sonra uygulama çok çıktı verirse daha yavaş olacaktır.
akostadinov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.