Akzeptieren Benutzereingaben mit Gets in Ruby
Beim Erstellen einer Befehlszeilenanwendung (CLI) in Ruby ist eine allgemeine Funktion das Empfangen von Eingaben von Benutzern, einschließlich des Benutzernamens oder einer Ja/Nein
-Antwort. Hier ist das Schlüsselwort gets
nützlich.
Dieses Tutorial zeigt, wie Sie ein sehr einfaches CLI-Programm erstellen, mit dem Benutzer ihre Namen eingeben und sie mit dem eingegebenen Namen begrüßen können.
Beispielcode:
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts "Hello #{name}, nice to have you here"
Ausgabe:
Hi, welcome to my app.
Enter your name to get started:
Oben ist die Ausgabe, die ich nach dem Ausführen des Codes bekomme. An diesem Punkt fordert mich das Programm auf, meinen Namen einzugeben. Das macht gets
; Es erstellt eine Eingabeaufforderung und wartet auf Benutzereingaben.
Unten ist die vollständige Ausgabe, die ich bekomme, nachdem ich meinen Namen als John
eingegeben und die Enter-Taste gedrückt habe.
Hi, welcome to my app.
Enter your name to get started:
John
Hello John
, nice to have you here
Sie müssen in der obigen Ausgabe etwas Seltsames bemerkt haben. Warum brach die Begrüßung Hello John, nice to have you here
nach John
? Um zu verstehen, was wirklich passiert, untersuchen Sie die Variable name
.
Beispielcode:
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts name.inspect
puts "Hello #{name}, nice to have you here"
Ausgabe:
Hi, welcome to my app.
Enter your name to get started:
John
"John\n"
Hello John
, nice to have you here
Oben ist die vollständige Ausgabe, die ich bekomme, nachdem ich John
als meinen Namen eingegeben habe. Sie können sehen, dass die Variable name
als John\n
angezeigt wird.
So verhält sich gets
; es hängt automatisch \n
an jeden Wert an, den es als Benutzereingabe erhält, dies wird als Zeilenumbruchzeichen bezeichnet, und wann immer es in einem Text erscheint, bedeutet dies, dass der Text an dieser Stelle umbrechen und in einer neuen Zeile fortgesetzt werden soll.
Eine gute Möglichkeit, dies zu beheben, ist die Verwendung der Methode chomp
, die alle nachgestellten Sonderzeichen entfernt, nicht nur das Zeilenumbruchzeichen (\n
), sondern auch das Wagenrücklaufzeichen (\r
). Sie können hier mehr darüber lesen, wie chomp
funktioniert.
Beispielcode:
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets.chomp
puts "Hello #{name}, nice to have you here"
Ausgabe:
Hi, welcome to my app.
Enter your name to get started:
John
Hello John, nice to have you here