Estoy hablando de Ruby pero no de ROR. No hay información sobre la entrada de la consola.
Sergey
Respuestas:
228
Estas hablando gets?
puts "Enter A"
a = gets.chomp
puts "Enter B"
b = gets.chomp
c = a.to_i + b.to_i
puts c
¿Algo como eso?
Actualizar
Kernel.getsintenta leer los parámetros encontrados en ARGVy solo pide la consola si no los ARGVencuentra. Para forzar a leer desde la consola incluso si ARGVno está vacío, useSTDIN.gets
Tengo un conflicto con esta solución: Kernel.getsintente leer los archivos que se encuentran ARGVy solo pregunte a la consola si no los ARGVencuentra. Para forzar a leer desde la consola aunque ARGVno esté vacío use STDIN.gets.
fguillen
3
a.to_iy b.to_ipodría ser mejor
Dorian
está getsbloqueando? Si no es así, ¿hay algún sustituto que esté bloqueando?
noMAD
1
@fguillen esa es una gran respuesta y no debería ocultarse en los comentarios. ¿Podrías quizás darle una respuesta, por favor? ¡Gracias!
Dan Rosenstark
2
@Yar gracias por la sugerencia, agregué una actualización a la respuesta en sí.
fguillen
28
también puede pasar los parámetros a través de la línea de comando. Los argumentos de la línea de comandos se almacenan en la matriz ARGV. entonces ARGV [0] es el primer número y ARGV [1] el segundo número
Hay muchas formas de recibir comentarios de los usuarios. Personalmente, me gusta usar el método get. Cuando usa get, obtiene la cadena
que escribió, y eso incluye la tecla ENTER que presionó para finalizar su entrada.
name = gets
"mukesh\n"
Puede ver esto en irb ; escriba esto y verá el \ n, que es el carácter de “nueva línea” que produce la tecla ENTER: Escriba name = getsy verá algo como "mukesh\n"
Puede deshacerse del molesto carácter de nueva línea usando el método chomp .
El método chomp le devuelve la cadena, pero sin la nueva línea de terminación. Hermosa salvadora de vida del método chomp.
name = gets.chomp
"mukesh"
También puede usar el terminal para leer la entrada. ARGV es una constante definida en la clase Object . Es una instancia de la clase Array y tiene acceso a todos los métodos de la matriz. Dado que es una matriz, aunque es una constante, sus elementos se pueden modificar y borrar sin problemas. De forma predeterminada, Ruby captura todos los argumentos de la línea de comandos pasados a un programa de Ruby (divididos por espacios) cuando se invoca el binario de la línea de comandos y los almacena como cadenas en la matriz ARGV .
Cuando se escribe dentro de su programa Ruby, ARGV tomará un comando de línea de comando que se ve así:
test.rb hi my name is mukesh
y crea una matriz que se ve así:
["hi","my","name","is","mukesh"]
Pero, si quiero pasar una entrada limitada, podemos usar algo como esto.
Respuestas:
Estas hablando
gets
?¿Algo como eso?
Actualizar
Kernel.gets
intenta leer los parámetros encontrados enARGV
y solo pide la consola si no losARGV
encuentra. Para forzar a leer desde la consola incluso siARGV
no está vacío, useSTDIN.gets
fuente
Kernel.gets
intente leer los archivos que se encuentranARGV
y solo pregunte a la consola si no losARGV
encuentra. Para forzar a leer desde la consola aunqueARGV
no esté vacío useSTDIN.gets
.a.to_i
yb.to_i
podría ser mejorgets
bloqueando? Si no es así, ¿hay algún sustituto que esté bloqueando?también puede pasar los parámetros a través de la línea de comando. Los argumentos de la línea de comandos se almacenan en la matriz ARGV. entonces ARGV [0] es el primer número y ARGV [1] el segundo número
y lo llamas así
fuente
Hay muchas formas de recibir comentarios de los usuarios. Personalmente, me gusta usar el método get. Cuando usa get, obtiene la cadena que escribió, y eso incluye la tecla ENTER que presionó para finalizar su entrada.
El método chomp le devuelve la cadena, pero sin la nueva línea de terminación. Hermosa salvadora de vida del método chomp.
También puede usar el terminal para leer la entrada. ARGV es una constante definida en la clase Object . Es una instancia de la clase Array y tiene acceso a todos los métodos de la matriz. Dado que es una matriz, aunque es una constante, sus elementos se pueden modificar y borrar sin problemas. De forma predeterminada, Ruby captura todos los argumentos de la línea de comandos pasados a un programa de Ruby (divididos por espacios) cuando se invoca el binario de la línea de comandos y los almacena como cadenas en la matriz ARGV .
Cuando se escribe dentro de su programa Ruby, ARGV tomará un comando de línea de comando que se ve así:
y crea una matriz que se ve así:
Pero, si quiero pasar una entrada limitada, podemos usar algo como esto.
y use esas entradas como esta en su programa:
fuente
si desea mantener los argumentos de Terminal, pruebe el siguiente código:
fuente
Si desea hacer una consola interactiva:
Uso (suponiendo que coloque el fragmento anterior en el
summator
archivo en el directorio actual):Usar
Ctrl + D
para salirfuente