Curso Kotlin | #7. Entrada de datos

Podés consultar el curso completo desde este link que te dejo acá. Podés seguirme por LinkedIn o Twitter si querés estar al tanto de las próximas publicaciones de cada capítulo.

Método readline

Ahora que ya vimos como definir una variable y los distintos tipos de datos que existen, tenemos todo lo necesario para enviar información escrita a nuestra consola.

Para ello utilizaremos un método llamado readline, de la siguiente manera:

print("Como es tu nombre? > ")
val name = readLine()
println("Tu nombre es $name")

Noten que usé print en la primer linea, y no println. Esto es porque queremos que la entrada de datos se posicione al lado de nuestro texto.

Luego si usamos println para que haga un salto de linea con el resultado.

Cuando ejecutemos el programa, nos pedirá nuestro nombre y lo escribiremos (el texto en verde), y luego daremos enter, recibiendo la salida “Tu nombre es Tom” y el aviso de que nuestro programa ha terminado.

Ahora bien, ¿qué devuelve el método readLine? Si miramos su definición (Control + Click en Windows):

public fun readLine(): kotlin.String? { /* compiled code */ }

Podemos observar que se trata de un nullable String. En el próximo capítulo trataremos el tema de nullables en detalle.

Lo importante en este caso es que se trata de un tipo de dato que ya manejamos un poco en profundidad.

Hay otros métodos interesantes en el tipo String que podemos utilizar, por ejemplo si queremos que todo el texto quede en mayusculas, usaríamos toUpperCase:

println("Tu nombre es ${name?.toUpperCase()}")
#output: Tu nombre es TOM

Y si necesitamos minúsculas, podemos utilizar toLowerCase:

println("Tu nombre es ${name?.toLowerCase()}")
#output: Tu nombre es tom

El “?” al lado de name es necesario porque se trata de una nullable variable. Paciencia, ya lo veremos en el próximo capítulo.

Estos últimos dos métodos son propios de la clase String. Haciendo un repaso de la clase anterior, podemos decir que a su vez es un CharSequence, por lo cual podemos aplicarle un filtro.

Imaginemos que en el nombre introducimos dígitos, lo cual es incorrecto. Queremos limpiar ese input:

print("Como es tu nombre? > ")
val name = readLine()
val nameSanitized = name?.filter { it.isDigit().not() }
println("Tu nombre es $nameSanitized")

Creamos una variable nameSanitized que recibirá el resultado del filtro isDigit, con una adición de la función not, la cual permitirá evaluar una negación.

En pocas palabras, le decimos algo como: Quiero todos los caracteres que sean isDigit igual a false. O sea, que no sean dígitos. Si corremos el programa:

Como es tu nombre? > Max234
Tu nombre es Max

Podemos observar que quitó todos los números.

Ahora bien: Sabemos que readLine devuelve un String, asi que podemos ahorrarnos una linea:

val name = readLine()?.filter { it.isDigit().not() }
println("Tu nombre es $name")

De esta manera podemos encadenar métodos y el código queda mucho más limpio. Incluso si quisiéramos aplicar minúsculas luego del filtro, podemos seguir concatenando métodos:

val name = readLine()?.filter { it.isDigit().not() }?.toLowerCase()

Esto va a funcionar siempre y cuando el valor retornado por cada método sea compatible con el siguiente.

Conclusiones

Esta fue una clase corta, pero atómica. Ver como funciona la lectura de la entrada de datos conjunto de nuestro conocimiento previo en strings, nos ayuda a ver el panorama completo.

Espero que puedan aplicar todos estos conocimientos a su día a día.

¡Los espero en la siguiente clase!

¡Deja un comentario!

Artículos relacionados

Curso Kotlin | #19. Pair

A veces necesitamos relacionar dos valores y almacenarlos en una variable única, y para ello tenemos a Pair.

Curso Kotlin | #17. Proyecto: The Hero Legacy

Si empezaste esta serie desde cero y ya leíste 16 capítulos, ¡Felicidades! Empezaste a dominar los primeros conceptos fundamentales en Kotlin. Este es el primer paso de tu senda como desarrollador/a. Estamos en una instancia en donde podemos poner en práctica todo lo que aprendiste hasta ahora. Bienvenido/a al primer proyecto de la serie.

Curso Kotlin | #16. Funciones

Las funciones son procedimientos que se pueden reutilizar y nos permiten encapsular comportamientos y mejorar la lectura del código.

Curso Kotlin | #15. Excepciones

Las excepciones en Kotlin nos permiten evitar comportamientos no deseados ante problemas que se presentan en tiempo de ejecución. Por ejemplo cuando se intenta dividir por cero, castear un tipo por otro no válido, intentar agregar un valor a una lista nula, entre otros casos. Hoy vamos a ver su implementación en el código.

Curso Kotlin | #14. Rangos

Cuando hablamos de rangos, nos referimos a un intervalo de números en el sentido matemático. Podemos generar, por ejemplo, un rango que comprenda los números del 1 al 10. Hoy veremos como aplicarlo a los conceptos anteriormente aprendidos.