2016-01-04 23 views
5

Basit bir "Uygulamaya devam etmek için herhangi bir tuşa basın" uygulamaya çalışıyorum. Bu mesajı konsola yazdım ve bir tuşa basıldıktan sonra onu silmek istiyorum.Nasıl kodlanır "devam etmek için tuşuna basın"

def continue 
    print "Press any key to continue\r" 
    gets 
end 

puts "An awesome story begins..." 
continue 
puts "And ends after 2 lines" 

Ancak \r hile çalışmıyor ve bir sonraki puts cümle silinmeyecektir:

"Writing over previously output lines in the command prompt with ruby" ardından, bu kod parçası çalıştı. Farklı bir işlev bağlamından dolayı mı? gets yeni bir satır mı? Ya da Windows işletim sistemi olduğum için mi?

+0

Btw StackOverflow sözdizimi vurgulaması, 'devam etmenin bir sözdizimi anahtar kelimesi olduğunu anlamamı sağladı ancak görünüşe göre bu bir sorun değil. –

+2

Ruby'de' continue' anahtar kelimesi yok. – Stefan

+0

@Stefan Oh, o zaman birkaç farklı dilde kullanıldıkça sadece SO'nun varsayılan renklendirmesiydi ... işaret ettiğin için teşekkürler –

cevap

10

STDIN'i gets yerine IO sınıfından kullanabilirsiniz.

require 'io/console'                          
def continue_story                            
    print "press any key"                          
    STDIN.getch                            
    print "   \r" # extra space to overwrite in case next sentence is short                            
end                               

puts "An awesome story begins..."                       
continue_story                             
puts "And ends after 2 lines"  

Bu sadece girilecek bir karakter (getch - karakteri olsun) gerektirdiğini avantaj vardır bir dönüş olmadan çalışmak veya girmek için 'herhangi bir tuşa basın' sağlanır.

+0

"Edit:" satırlarını eklemek gerekli değildir. Gerektiğinde neyin değiştiğini görebiliriz. Bilgilerinizi ilk etapta nereye eklediğinizi belirtin. –

İlgili konular