2016-01-04 23 views
5

Sto cercando di implementare un semplice "Premere un tasto qualsiasi per continuare". Stampo questo messaggio sulla console e voglio cancellarlo dopo aver premuto un tasto.Come codificare "premere il tasto per continuare"

Dopo "Writing over previously output lines in the command prompt with ruby", ho provato questo pezzo di codice:

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

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

Tuttavia, il trucco \r non funziona e la prossima puts non cancellerà la sentenza. È a causa di un contesto di funzione diverso? Lo gets genera una nuova riga? O perché sono su sistema operativo Windows?

+0

Btw StackOverflow evidenziazione della sintassi mi ha fatto capire che 'continue' era una parola chiave per la sintassi ma a quanto pare questo non è un problema –

+2

Ruby non ha una parola chiave' continue'. – Stefan

+0

@Stefan Oh, allora era solo la colorazione predefinita di SO, in quanto continua è usato in molti altri linguaggi ... grazie per indicarlo –

risposta

10

È possibile utilizzare STDIN dalla classe IO anziché gets.

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"  

Questo ha il valore aggiunto che richiede solo un carattere da inserire (getch - ottenere carattere) permettendo al 'premere un tasto qualsiasi' di lavorare senza un ritorno o entrare.

+0

Non è necessario aggiungere "Modifica:" linee. Possiamo vedere cosa è stato cambiato se necessario. Semplicemente fai il tuo cambiamento dove avresti aggiunto le informazioni in primo luogo. –

Problemi correlati