2014-04-21 7 views
26

Ich habe gelernt, dass gets eine neue Zeile erstellt und fragt den Benutzer, etwas einzugeben, und gets.chomp tut das gleiche, außer dass es keine neue Zeile erstellt. gets muss ein Objekt zurückgeben, damit Sie eine Methode darauf aufrufen können, oder? Wenn ja, lassen Sie das von gets zurückgegebene Objekt als tmp benennen, dann können Sie die chomp-Methode von tmp aufrufen. Aber bevor getstmp zurückgibt, sollte es eine neue Zeile auf dem Bildschirm drucken. Was macht chomp? Entfernt es die neue Zeile nach der gets erstellt es?Wie geht es in Ruby-Arbeit?

Eine andere Möglichkeit, meine Frage neu zu stellen ist: Werden die folgenden Aktionen ausgeführt, wenn ich gets.chomp anrufe?

  1. gets druckt eine neue Linie
  2. gets kehrt tmp
  3. tmp.chomp die neue Linie
  4. Benutzereingabe

Ist das die richtige Reihenfolge entfernt?

+2

'gets' keine neue Zeile schafft. Der Benutzer gibt es ein. 'bekommt' nur das. – sawa

Antwort

44

gets lässt der Benutzer eine Zeile eingeben und gibt sie als Wert an Ihr Programm zurück. Dieser Wert enthält den abschließenden Zeilenumbruch. Wenn Sie dann auf diesen Wert chomp aufrufen, wird dieser Zeilenumbruch abgeschnitten. Also nein, was Sie haben es falsch ist, sollte es eher sein:

  1. getsbekommt eine Textzeile, einschließlich einen Zeilenumbruch am Ende.
    • Diese ist der Benutzereingabe
  2. gets kehrt die Textzeile als eine Zeichenfolge.
  3. Aufruf chomp auf diesem Wert entfernt den Zeilenumbruch

Die Tatsache, dass Sie die Textzeile auf dem Bildschirm zu sehen ist, nur weil Sie es dort an erster Stelle eingetragen. gets unterdrückt nicht magisch die Ausgabe von Dingen, die Sie eingegeben haben.

10

Die Frage sollte nicht sein, wenn dies die richtige Reihenfolge ist, sondern mehr, wenn dies der richtige Weg ist, dies zu erreichen. Das ist was du tust.

Schauen Sie sich das an, was Sie mehr oder weniger erreichen wollen. Zuerst weisen Sie eine Variable mit dem Namen tmp dem Rückgabewert gets zu. Dann rufen Sie die chomp (wie in der Ruby-Dokumentation) Methode für dieses Objekt an und Sie können sehen, dass chomp die neue Zeile entfernt hat. Was chomp tatsächlich tut, entfernt die Geben Sie Zeichen am Ende der Zeichenfolge.Wenn Sie hello geben, jedes Zeichen in einer Zeit, und drücken Sie dann Enter nimmt alle Briefe und die Enter bekommt. Denken Sie daran, dass Enter nur ein anderes Zeichen ist.

1. tmp = gets 
hello 
=>"hello\n" 

2. tmp.chomp 
"hello" 

Getsist Ihre Benutzereingabe. Außerdem ist es gut zu wissen, dass gets oder puts bedeuten get string * oder put string für puts. Das bedeutet, dass diese Methoden nur mit strings zu tun haben.

1

chomp ist die Methode zum Entfernen des nachfolgenden neuen Zeilenzeichens, z. B. '\ n' aus der Zeichenfolge. Immer wenn "gets" verwendet wird, um i/p vom Benutzer zu übernehmen, fügt es ein neues Zeilenzeichen an, d. H. "\ N" am Ende des Strings. So entfernen Sie '\ n' aus der Zeichenfolge 'chomp' wird verwendet.

str = "Hallo ruby ​​\ n"

str = str.chomp

setzt str

o/p

"Hallo Rubin"

-2

nehmen Sie ein Beispiel von 1.

x = gets 
y = gets 
puts x+y 

2.

x = gets.chomp 
y = gets.chomp 
puts x+y 

laufen nun 1 und 2 getrennt und sehen Sie die difference.thank Sie

+0

Worauf Sie hinweisen möchten, der Benutzer weiß es bereits. Die Frage betrifft die Klärung der Materie. –