Ich spreche von Ruby, aber nicht von ROR. Es gibt dort kein Wort über Eingaben von der Konsole.
Sergey
Antworten:
227
Sprechen Sie über gets?
puts "Enter A"
a = gets.chomp
puts "Enter B"
b = gets.chomp
c = a.to_i + b.to_i
puts c
Sowas in der Art?
Aktualisieren
Kernel.getsversucht, die gefundenen Parameter zu lesen ARGVund fragt nur nach einer Konsole, wenn sie nicht ARGVgefunden wird. Um das Lesen von der Konsole zu erzwingen, auch wenn ARGVes nicht leer ist, verwenden SieSTDIN.gets
Ich habe einen Konflikt mit dieser Lösung: Kernel.getsVersuchen Sie, die darin gefundenen Dateien zu lesen, und fragen Sie ARGVnur nach einer Konsole, wenn sie nicht ARGVgefunden wird. Um das Lesen von der Konsole zu erzwingen, auch wenn ARGVes nicht leer ist, verwenden Sie STDIN.gets.
Fguillen
3
a.to_iund b.to_ikönnte besser sein
Dorian
ist getsblockiert? Wenn nicht, gibt es einen Ersatz, der blockiert?
noMAD
1
@fguillen das ist eine tolle Antwort und sollte nicht in Kommentaren versteckt werden. Könnten Sie es vielleicht eine Antwort geben, bitte? Vielen Dank!
Dan Rosenstark
2
@Yar danke für den Vorschlag, ich habe der Antwort selbst ein Update hinzugefügt .
Fguillen
28
Sie können die Parameter auch über die Befehlszeile übergeben. Befehlszeilenargumente werden im Array ARGV gespeichert. ARGV [0] ist also die erste Zahl und ARGV [1] die zweite Zahl
Es gibt viele Möglichkeiten, Eingaben von den Benutzern zu erhalten. Ich persönlich mag es, die Methode zu benutzen. Wenn Sie get verwenden, wird die von
Ihnen eingegebene Zeichenfolge abgerufen, einschließlich der EINGABETASTE , die Sie gedrückt haben, um Ihre Eingabe zu beenden.
name = gets
"mukesh\n"
Sie können dies in irb sehen ; Geben Sie diese und Sie werden sehen , die \ n, die „Neue - Zeile“ Zeichen ist , dass die ENTER - Taste erzeugt: Geben name = getsSie Somethings sehen , wie "mukesh\n"
Sie von lästigen loswerden können Newline Zeichen mit chomp Methode.
Die chomp-Methode gibt Ihnen den String zurück, jedoch ohne den abschließenden Zeilenumbruch. Schöner Lebensretter der Chomp-Methode.
name = gets.chomp
"mukesh"
Sie können das Terminal auch zum Lesen der Eingabe verwenden. ARGV ist eine in der Object- Klasse definierte Konstante . Es ist eine Instanz der Array-Klasse und hat Zugriff auf alle Array-Methoden. Da es sich um ein Array handelt, obwohl es eine Konstante ist, können seine Elemente problemlos geändert und gelöscht werden. Standardmäßig erfasst Ruby alle Befehlszeilenargumente, die beim Aufrufen der Befehlszeilen-Binärdatei an ein Ruby-Programm übergeben werden (durch Leerzeichen getrennt), und speichert sie als Zeichenfolgen im ARGV-Array .
Wenn ARGV in Ihr Ruby-Programm geschrieben wird, übernimmt es einen Befehlszeilenbefehl, der folgendermaßen aussieht:
test.rb hi my name is mukesh
und erstellen Sie ein Array, das folgendermaßen aussieht:
["hi","my","name","is","mukesh"]
Aber wenn ich begrenzte Eingaben übergeben möchte, können wir so etwas verwenden.
test.rb 1223
und verwenden Sie diese Eingabe wie folgt in Ihrem Programm:
Antworten:
Sprechen Sie über
gets
?Sowas in der Art?
Aktualisieren
Kernel.gets
versucht, die gefundenen Parameter zu lesenARGV
und fragt nur nach einer Konsole, wenn sie nichtARGV
gefunden wird. Um das Lesen von der Konsole zu erzwingen, auch wennARGV
es nicht leer ist, verwenden SieSTDIN.gets
quelle
Kernel.gets
Versuchen Sie, die darin gefundenen Dateien zu lesen, und fragen SieARGV
nur nach einer Konsole, wenn sie nichtARGV
gefunden wird. Um das Lesen von der Konsole zu erzwingen, auch wennARGV
es nicht leer ist, verwenden SieSTDIN.gets
.a.to_i
undb.to_i
könnte besser seingets
blockiert? Wenn nicht, gibt es einen Ersatz, der blockiert?Sie können die Parameter auch über die Befehlszeile übergeben. Befehlszeilenargumente werden im Array ARGV gespeichert. ARGV [0] ist also die erste Zahl und ARGV [1] die zweite Zahl
und du nennst es so
quelle
Es gibt viele Möglichkeiten, Eingaben von den Benutzern zu erhalten. Ich persönlich mag es, die Methode zu benutzen. Wenn Sie get verwenden, wird die von Ihnen eingegebene Zeichenfolge abgerufen, einschließlich der EINGABETASTE , die Sie gedrückt haben, um Ihre Eingabe zu beenden.
Die chomp-Methode gibt Ihnen den String zurück, jedoch ohne den abschließenden Zeilenumbruch. Schöner Lebensretter der Chomp-Methode.
Sie können das Terminal auch zum Lesen der Eingabe verwenden. ARGV ist eine in der Object- Klasse definierte Konstante . Es ist eine Instanz der Array-Klasse und hat Zugriff auf alle Array-Methoden. Da es sich um ein Array handelt, obwohl es eine Konstante ist, können seine Elemente problemlos geändert und gelöscht werden. Standardmäßig erfasst Ruby alle Befehlszeilenargumente, die beim Aufrufen der Befehlszeilen-Binärdatei an ein Ruby-Programm übergeben werden (durch Leerzeichen getrennt), und speichert sie als Zeichenfolgen im ARGV-Array .
Wenn ARGV in Ihr Ruby-Programm geschrieben wird, übernimmt es einen Befehlszeilenbefehl, der folgendermaßen aussieht:
und erstellen Sie ein Array, das folgendermaßen aussieht:
Aber wenn ich begrenzte Eingaben übergeben möchte, können wir so etwas verwenden.
und verwenden Sie diese Eingabe wie folgt in Ihrem Programm:
quelle
Wenn Sie die Argumente von Terminal speichern möchten, versuchen Sie den folgenden Code:
quelle
Wenn Sie eine interaktive Konsole erstellen möchten:
Verwendung (vorausgesetzt, Sie haben das obige Snippet in die
summator
Datei im aktuellen Verzeichnis eingefügt ):Verwenden Sie
Ctrl + D
zum Beendenquelle