2011-02-10 23 views

cevap

50

\r çıkış sırasını satırın sonunda kullanabilirsiniz (sonraki satır bu satırın üzerine yazacaktır). senin örneğe devam edersek:

require 'time' 

loop do 
    time = Time.now.to_s + "\r" 
    print time 
    $stdout.flush 
    sleep 1 
end 
+1

Hmm, jsegal'ın çözümünü daha iyi seviyorum, bu yüzden cevabını seçin. Çıktınızı hala temizlemeyi unutmayın. – cam

+1

Burada bölünmüş durumdayım, çünkü cevabınız tam olarak sorduğum mükemmel bir kod snippet'idir: * Ruby * içindeki bir çözüm. Evet, jsegal'in önerisini kullandıysa daha zarif olabilirdi. Ama a) jsegal'ın cevabı, özel bir ruby ​​değildir ve b) Çalışan bir snippet ile bir cevabı kabul etmeyi tercih ederim. Bu yüzden jsegal'in önerisini yansıtmak için cevabınızı düzenleyeceğim ve bu düzenleme kabul edildiğinde cevabınızı kabul edip jsegaliyi ona oy vererek ödüllendireceğim. Bu sistem altında yapabileceğim en iyisi. –

+0

@Steph: Kabul edilmesi gereken cevabın temel olarak, jsegal'in cevabının bir kod snippet içermediği gerçeğine dayanması gibi görünüyor. Yığın Taşması'nın bir kod paylaşım sitesi olmadığı göz önüne alındığında, bu oldukça keyfi bir gereksinim gibi görünüyor. Bunları yararlı bulduysanız, her iki cevabı da not etmeli ve size en uygun çözümü bulmanızda size yardımcı olanı kabul etmelisiniz. –

23

satırın sonundaki çıkış sırası \r kullanın - bir satır besleme olmadan satır başı olduğunu.

Çoğu unix terminalinde, istediğinizi yapabilirsiniz: sonraki satır bir önceki satırın üzerine yazacaktır.

Satırlarınızın sonunu, önceki satırlardan daha kısasa boşluklarla doldurmak isteyebilirsiniz.

Bunun Ruby'ye özgü olmadığını unutmayın. Bu hile herhangi bir dilde çalışır!

+0

Metin çıktısı geçerli terminal penceresinden daha genişse, tekrar çıkış hattından sonra çizgiyi görmeye başlayacağınızı unutmayın. –

+3

Geçerli hattaki sorunlardan kaçınmak için bir öncekinden kısa. Yöntemi rjust/ljust ile ör. "Çıktım" .ljust (80). – sunsations

1

Sadece bir Array alan ve gerektiğinde beyaz boşluk çıkaran bir yazı yazdım. Çalışma zamanında hızı kontrol etmek için hız değişkenini kaldırabilirsiniz. Ayrıca diğer uykuyu da kaldırın 0.2 Dizideki son kısım, dizinin tamamını çıkarmak için boş olmalı, hala sabitlemek için çalışıyor.

#@speed = ARGV[0] 

strArray = [ "First String there are also things here to backspace", "Second Stringhereare other things too ahdafadsf", "Third String", "Forth String", "Fifth String", "Sixth String", " " ] 


#array = [ "/", "-", "|", "|", "-", "\\", " "] 

def makeNewLine(array) 
    diff = nil 
    print array[0], "\r" 
    for i in (1..array.count - 1) 
     #sleep @speed.to_f 
     sleep 0.2 
     if array[i].length < array[i - 1].length 
      diff = array[i - 1].length - array[i].length 
     end 
     print array[i] 
     diff.times { print " " } if !diff.nil? 
     print "\r" 
     $stdout.flush 

    end 
end 

20.times { makeNewLine(strArray) } 

#20.times { makeNewLine(array)} 
İlgili konular