2016-01-04 6 views
5

Ich versuche, eine einfache "Drücken Sie eine beliebige Taste, um fortzufahren". Ich drucke diese Nachricht auf der Konsole und möchte sie löschen, nachdem eine Taste gedrückt wurde.Wie Code "drücken Sie die Taste, um fortzufahren"

Nach "Writing over previously output lines in the command prompt with ruby", versuchte ich dieses Stück Code:

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

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

jedoch der \r Trick funktioniert nicht und die nächsten puts den Satz nicht löschen. Liegt es an einem anderen Funktionskontext? Die gets spawnt eine Newline? Oder weil ich unter Windows OS bin?

+0

Btw StackOverflow Syntax Highlighting machte mir klar, 'continue' war ein Syntax-Schlüsselwort, aber anscheinend ist das kein Problem –

+2

Ruby hat kein 'continue' Schlüsselwort. – Stefan

+0

@Stefan Oh, dann war es nur die Standardfarbe von SO, da continue in mehreren anderen Sprachen verwendet wird ... Danke, dass Sie darauf hingewiesen haben –

Antwort

10

Sie können STDIN aus der IO-Klasse anstelle von gets verwenden.

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"  

Dies hat den zusätzlichen Vorteil, dass es nur ein Zeichen eingegeben werden müssen (getch - get Zeichen) ermöglicht die ‚Drücken Sie eine beliebige Taste‘ ohne eine Rückkehr zur Arbeit oder eingeben.

+0

Es ist nicht notwendig, "Edit:" Zeilen hinzuzufügen. Wir können sehen, was bei Bedarf geändert wurde. Nehmen Sie Ihre Änderung einfach dort vor, wo Sie die Informationen an erster Stelle hinzugefügt hätten. –

Verwandte Themen