Tengo dos preguntas, la primera es qué hace esto: numero = Integer(gets.chomp).
A ver, sé que en un principio le estoy dando a la variable numero un valor que agregará el usuario, pero el "Integer" me está dejando KO. No sé qué hace ahí, para qué sirve, ni si es necesario.
Ahora bien, tengo hecho algo así:
numero = Integer(gets.chomp)
if numero < 100
print "Número es menor a 100".
return
elsif numero > 100
print "Número es mayor a 100."
return
else
print "El número es 100"
return
end
En la consola, me devuelve el string más un fallo que dice unexpected return. Solo puse el return ahí por ponerlo, para ver qué hace... no sé porqué da fallo. También, ¿Cómo hago para imprimir el valor de return por pantalla?
Gracias, siento las molestias.
Mod: los códigos deben ir en etiquetas GeSHi
Integer() transforma un número en formato texto a un entero (Integer es entero en español). Dado que gets.chomp es la entrada de datos por teclado de Ruby, ésta solo acepta textos, por ello, cuando se ingresan números en realidad se ingresa un texto que tiene un número y debe de convertirse a número (entero o real). Por otro lado, return no almacena ningún valor. En esos if su uso es innecesario. Se usa return cuando se desea devolver un valor desde una función (def).
Saludos.
¡Oh, ya veo! Muy buena explicación, gracias, de verdad ayuda bastante todo esto.
Aun así, me surge una nueva duda. Si el error me lo da porque estoy ingresando un valor de string, en vez de numérico, si hago esto:
numero = gets.chomp
numero.to_i
if numero < 100
print "#{numero} es menor a 100."
end
Debería de transformarse la variable número a un valor numérico, pero me da error. ¿Qué sucede, qué hago mal?
Cita de: Saito_25 en 30 Marzo 2015, 12:36 PMqué hago mal?
La función
to_i devuelve un valor, es solo eso, un valor Integer, si no asignas el valor a la variable
numero entonces la variable seguirá siendo de tipo String.
Puedes realizar la conversión del datatype de manera "persistente":
numero = gets.chomp # String
numero = numero.to_i # Integer
# O la asignación de un valor Integer directamente convirtiendo la entrada de datos del teclado...
# numero = gets.chomp.to_i
if numero < 100
print "#{numero} es menor a 100."
end
O puedes realizar una conversión "temporal" en la expresión de la comparación que solo tendrá efecto durante la evaluación:
numero = gets.chomp # String
if numero.to_i < 100
print "#{numero} es menor a 100."
end
PD: Cuando publiques código debes respetar los normas y utilizar las etiquetas GeShi, se te ha avisado en varias ocasiones, trata de que no vuelva a ocurrir... LEE MI FIRMA.
Cualquier futuro mensaje que incumpla dicha norma podrá ser bloqueado o eliminado sin previo aviso.Saludos!
¡¡¡Putas etiquetas!!! ¡¡¡Y puto yo!!! Nunca me acuerdo joee... :-(
Gracias por la ayuda, intentaré ponerlo en las etiquetas la próxima vez, por dios... espero acordarme...