¿Cómo empezar con Kotlin?

kotlin-started

Como posiblemente ya sabrás, el lenguaje de programación Kotlin no es nuevo, sin embargo aún hay muchos desarrolladores que no se han animado a probar su potencial, esto puede deberse a varias razones y una de ellas es no saber cómo empezar, a continuación te mostrare algunas funciones básicas del lenguaje con las que podrás aprenderlo rápidamente.

Kotlin

Según la wikipedia, Kotlin es un lenguaje de programación de tipado estático que corre sobre la máquina virtual de Java y que también puede ser compilado a código fuente de JavaScript. Es desarrollado principalmente por JetBrains y surgió inicialmente para sustituir Java en los proyectos desarrollados por la compañía. Era fundamental basarse en la JVM para poder ser totalmente interoperable con Java y su ecosistema.

Los principios de Kotlin son:

  • Sencillo y pragmático. La curva de aprendizaje es bastante más ligera que otros lenguajes, lo cual apoya su adopción.
  • Interoperable al 100% con Java. Código escrito en Java se puede usar directamente desde Kotlin.
  • Ligero. Para que Android pudiera adoptarlo, debe poder ser ejecutado en cualquier dispositivo sin sobrepasar el peso específico de las APKs en Android.

Archivos

La primera cosa que debes hacer cuando empiezas a programar en Kotlin es crear un nuevo archivo. La extensión de los archivos Kotlin es .kt A diferencia de Java, en Kotlin no existe una fuerte relación entre el nombre del archivo y el nombre de la clase, sin embargo continua siendo una buena practica llamarlos igual.

Adiós punto y coma ( ; )

Cada sección de código en Java debe terminar con ;

Kotlin es un lenguaje pragmático así que infiere durante tiempo de compilación en donde debería poner el ;

Gracias a esto, en Kotlin podemos olvidarnos el famoso ;  origen de muchos errores de compilación. Tengo que señalar que personalmente no ha sido sencillo dejar de usarlo, incluso hoy continuo cometiendo el error de agregarlo en algunas ocaciones, pero por suerte esto no genera ningún error. No es más que cuestión de acostumbrarse a ello.

Convención de código

Como convención, si tu archivo Kotlin contiene una sola clase, nombra tu archivo igual que tu clase.

Si tu archivo contiene más de una clase, entonces el nombre del archivo debería describir el propósito general de esas clases. Usa CamelCase cuando nombres tus archivos según las convenciones de código de Kotlin. 
https://kotlinlang.org/docs/reference/coding-conventions.html#naming-rules

En general de ser posible procura consultar las convenciones de código que Kotlin nos proporciona, de esta manera podrás conseguir un código mucho más claro y legible.

Inferencia de tipos

Vamos a definir un string simple en Java:

Hemos definido s como tipo String. Pero, ¿Porqué? ¿No es obvio en este punto?

Kotlin tiene inferencia de tipos:

Ahora el compilador decidirá qué tipo de variable debería usar. A diferencia de los lenguajes de interpretación (como JavaScript, Groovy o Ruby), el tipo de variable es definida solo una vez.

Esto no funcionará:

Te podrías preguntar porque hemos usado var y val para definir variables, lo explicare en breve.

val vs var

En Java una variable puede ser declarada como final. Las variables finales solo pueden ser asignadas una sola vez, por ejemplo:

Recuerda que Kotlin sugiere usar datos inmutables tanto como sea posible. La palabra reservada para las variables finales en Kotlin es simplemente val

Si tienes un caso en el cual te gustaría reasignar el valor de una variable entonces deberás usar la palabra reservada var

Nulos

Probablemente la mas notoria excepción en el mundo de Java es NullPointerException.

La razón detrás de esta excepción es que cada objeto en Java puede ser null. El siguiente código nos muestra como:

En este caso marcar s como final prevendría la excepción.

Pero que hay acerca de esto:

En este código todavia es posible pasar null:

Kotlin revisa esto en durante el tiempo de compilación:

Hagamos nuestra función printLength():

Si llamamos a esta función con null el programa no compilará

Si tu quieres especificar que tu variable pueda recibir un null entonces debes marcarla como nullable usando el signo ?

Estructuras de control

Son instrucciones que permiten romper la secuencia de la ejecución de un programa; esto significa que una estructura de control permite que se realicen unas instrucciones y omitir otras, de acuerdo a la evaluación de una condición.

if

En Java un método con un if puede ser algo como:

Por supuesto esta es una situación simple pero tienes una variable que en algún punto es null, ¿cierto?

En Java, if es solo una declaración y no devuelve nada, por el contrario, en Kotlin if es una expresión, lo que significa que devuelve un valor, así que podríamos tener la misma función de la siguiente manera:

Si estas familiarizado con Java podrás fácilmente leer este código. Esta función recibe un Boolean (que no puede ser null), y devuelve un string (y nunca un null). Sin embargo es una expresión y puede devolver un resultado. El resultado es asignado a nuestra variable solo una vez.

En Kotlin podemos simplificar esta función así:

  1. El valor de retorno puede ser inferido
  2. El return de la última linea puede ser omitido
  3. Una expresión if simple puede escribirse en una sola linea

Esto suele ser un poco difícil de entender en un principio pero como siempre, la practica es tu mejor aliado.

when

¿Qué pasa si quisiéremos tener más condiciones en nuestro if?

En Java, usaríamos un switch. En Kotlin existe la expresión when, la cual es más poderosa ya que se le pueden agregar algunas otras características de Kotlin.

Vamos a crear una función que basada en el monto de dinero que tengamos, podremos comprar determinado regalo de cumpleaños:

Tal como se puede observar, when también soporta un rango de valores. El caso por defecto esta cubierto con el bloque else.

Como regla general usa when si tienes más de dos condiciones. Usa if para verificaciones simples.

Ciclos

Vamos a discutir otra estructura de control muy común, los ciclos. Los ciclos son estructuras de control muy comunes para la mayoría de los desarrolladores. Sin ciclos sería muy difícil repetir el mismo bloque de código más de una vez.

for

Seguro ya conoces el tan usado ciclo for, ahora haremos un for en Java que pintará cada uno de los caracteres de un string en una nueva linea tal y como sigue:

El mismo ciclo en Kotlin es:

Ten en cuenta que aunque el bucle habitual en Java es exclusivo (excluye el último índice por definición, a menos que se especifique lo contrario) el bucle en Kotlin es inclusivo. Esa es la razón por la que tenemos que restar uno de la longitud para evitar el desbordamiento (índice de la cadena fuera de rango): (word.length-1)

Si quieres evitar esto, tu puedes usar la función until

A diferencia de otros lenguajes de programación, revertir los indices de la siguiente manera no funcionará:

Si tu intención es pintar la palabra en orden inverso, por ejemplo, deberás usar la función downTo:

Esto pintará lo siguiente:

d
r
o
w

Puede parecer confuso que until y downTo sean llamadas funciones, aunque luzcan más como operadores. Esta es otra característica interesante de Kotlin llamada infix call.

while

No hay ninguna diferencia en cuanto al uso del ciclo while, en Kotlin esto es así:

Esto pintará números del 1 al 10. Tenga en cuenta que estamos forzados a definir x como var.

Conclusión

Esto es solo una parte de lo que Kotlin puede ofrecer. Te hable de lo más básico y espero que te sirva como una forma de comenzar en el lenguaje. Si eres programador Android es posible que pienses que esto no te ayuda para crear una aplicación y estas en lo cierto. Aún hace falta hablar de como Kotlin trabaja en conjunto con Android Studio para crear aplicaciones con menos código que con Java. Te aseguro que en este blog hablaré de eso pero será en otro post. 

Si tienes alguna pregunta por favor déjala en la caja de comentarios.

Referencias

Hands-On Desing Patters with Kotlin – https://www.packtpub.com/application-development/hands-design-patterns-kotlin
Kotlin Documentation – https://kotlinlang.org/docs/reference/

Sobre Hugo Figueroa 2 Artículos
Entusiasta de la buenas practicas de programación, amante del rock/metal y del café.

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*