Solución:
gets
permite al usuario ingresar una línea y la devuelve como un valor a su programa. Este valor incluye el salto de línea final. Si luego llamas chomp
en ese valor, este salto de línea se corta. Entonces no, lo que tienes allí es incorrecto, debería ser:
-
gets
obtiene una línea de texto, incluso un salto de línea al final.- Esta es la entrada del usuario
-
gets
devuelve esa línea de texto como un valor de cadena. - Vocación
chomp
en ese valor elimina el salto de línea
El hecho de que vea la línea de texto en la pantalla se debe solo a que la ingresó allí en primer lugar. gets
no suprime mágicamente la salida de las cosas que ingresó.
La pregunta no debería ser “¿Es este el orden correcto?” pero más “¿es esta la forma correcta de abordar esto?”
Considere esto, que es más o menos lo que quiere lograr:
- Asignas una variable llamada
tmp
el valor de retorno degets
, que es una cadena. -
Entonces llamas a String’s
chomp
método en ese objeto y puedes ver quechomp
eliminó la nueva línea final.En realidad que
chomp
hace, es eliminar el Ingresar personaje (“n
“) al final de la cadena. Cuando escribe h mi l l o, un carácter a la vez, y luego presione Ingresargets
toma todas las letras y los Ingresar carácter de nueva línea de la tecla (“n
“).1. tmp = gets hello =>"hellon" 2. tmp.chomp "hello"
gets
es la entrada de su usuario. Además, es bueno saber que *gets
significa “obtener cadena” y puts
significa “poner cuerda”. Eso significa que estos métodos solo tratan con cadenas.
masticar es el método para eliminar el carácter de nueva línea final, es decir, ‘ n’ de la cadena. cada vez que se usa “gets” para tomar i / p del usuario, agrega un carácter de nueva línea, es decir, ‘ n’ al final de la cadena. Así que para eliminar ‘ n’ de la cadena ‘masticar‘se utiliza.
str = “Hola ruby n”
str = str.chomp
pone str
o / p
“Hola ruby”