Sé que esta pregunta es viejo, pero aunque me muestro lo que utilizo como mi método estándar para conseguir la entrada.
require 'readline'
def input(prompt="", newline=false)
prompt += "\n" if newline
Readline.readline(prompt, true).squeeze(" ").strip
end
Esto es muy agradable ya que si el usuario añade espacios extraños al final o al principio, que va a eliminar aquellos, y se mantiene un historial de lo que entraron en el pasado (Cambiar el true
a false
no hacer que haga eso). Y, si ARGV
no está vacío, entonces gets
intentará leer de un archivo en ARGV
, en lugar de recibir información. Además, Readline
es parte de la biblioteca estándar de Ruby por lo que no tiene que instalar gemas. Además, no puede mover el cursor cuando usa gets
, pero puede hacerlo con Readline
.
Y, sé que el método no es una línea, pero es cuando se llama a que
name = input "What is your name? "
Que sea una función que toma el texto del mensaje y devuelve el texto de entrada? Si quiere ser más elegante y necesita múltiples ciclos de solicitud/entrada, puede hacer que la función tome una serie de instrucciones y un Bloquear, luego repita las instrucciones y ceda cada entrada. – asm