Introducción
Una vez superada los problemas de compilación, podemos empezar a estudiar las propiedades del lenguaje, una de las ventajas de Kotlin es que permite importar las librerías de Java, por lo que no es necesario reescribir todos nuestros proyectos.
Por ahora, el problema es que al convertir a la máquina virtual de Java, los archivos aumentan un poco de tamaño, por lo que nuestras aplicaciones deben ser algo más pequeñas.
Las ventajas de Kotlin es que la curva de aprendizaje para un programador Java no es tan pronunciada. Una de las diferencias corresponde a que el código no requiere de la cerradura de instrucción: ;
I.Manejo de import
Debo confesar que esta parte me generó un poco de problemas, no por el lenguaje, sino la falta de experiencia en él.
Si queremos importar una librería ya escrita en java utilizamos: import <nombre_librería>, por ejemplo:
import java.util.TreeMap
Importar librerías personales en Kotlin
Para ello consideremos la jerarquía de archivos de nuestro proyecto
- /: directorio raíz
- /lib: directorio de nuestras librerías
import lib.*
Si tenemos una estrutura más amplia en nuestra librería con más de una subcarpeta, por ejemplo /lib/folder02/<libería2>.kt el código de importación será:
import lib.folder02.*
La diferencia con Java, corresponde a que se pueden importar métodos específicos de nuestra librería. Esto es si dentro de nuestro <libreria>kt (que se encuentra en /lib) existe una función llamada funcX podemos importar esta función aplicando el código:
import lib.funcX
Nota: si funcX se encontrara dentro de /lib/folder02/<libreria2>.kt, el código para importar la función específica sería:
import lib.folder02.funcX
Así, de esta manera si tenemos un archivo llamado shapes.kt en una carpeta llamada geometry en nuestro directorio raíz con la función createRandomRectangle y queremos importar la función a nuestro main, que se encuentra en el directorio raíz, dentro del archivo main.kt, podemos realizarlo de la siguiente manera (ejemplo adaptado de Kotlin in Action):
Archivo: /geometry/shapes.kt
//paquete para importar
package geometry
//importar librerías de java
import java.util.Random
//Clase extensible
class Rectangle(val height: Int, val width: Int)
{
val isSquare: Boolean
get() = height == width
}
//Extensión de una clase
fun createRandomRectangle(): Rectangle
{
val random = Random()
return Rectangle(random.nextInt(), random.nextInt())
}
Archivo: /main.kt
package geometry
import geometry.createRandomRectangle
fun main(args: Array<String>)
{
println("El rectángulo aleatorio, es un cuadrado: ${createRandomRectangle().isSquare}")
}
Si no importamos correctamente la librería, y utilizamos alguna función, tendremos un error de referencia al momento de compilar:
kot-05.kt:14:54: error: unresolved reference: funcX
La estructura de salida del error de compilación es la siguiente:
nombrearchivo.kt:línea:columna: error: tipo_error: función
II. Manejo de Variables
Las variables y constantes se declaran de la siguiente maneran val <nombre_identificador>: <Tipo> (para una variable) y val <nombre_identificador> = <valor>
//Declaración de una variable
val myVariable: Int
//Declaración de una constante
val myConstant = 5 //Constante Entero
val myString = "Hola" //Cadena
val myReal = 7.5e2 //Constante Real
Otro identificador de variables corresponde a var, su uso es similar la diferencia corresponde a:
- val: variables de valor inmutable una vez asignada
- var: variables de valor mutable
III. Función principal
Para ejecutar alguna aplicación requerimos de tener un método principal el cual es muy similar al de Java, excepto que no es necesario que esté dentro de una clase
JAVA:
public class ClasePrincipal {
public static void main(String[] args)
{
...
}
}
KOTLIN:
fun main(args: Array<String>)
{
...
}
Un ejemplo de programa con salida en consola de Kotlin sería
val saludo = "Hola"
fun main (args: Array<String>){
println("Un saludo: $saludo")
}
La salida de consola corresponde a:
>>Un saludo: Hola
El operador $, permite accesar al valor de la variable, muy similar como funciona en los lenguajes scripts como javascript, php, etc.. En Kotlin también nos permite imprimir la salida de una función o una secuencia de instrucciones, que se encuentren entre llaves{ ... }:
println("El rectángulo aleatorio, es un cuadrado: ${createRandomRectangle().isSquare}")
Post Anterior:
Dedicada a la instalación y algunos problemas con el compilador de Kotlin
Post Siguiente:
Bibliografía:
Jemerov, D. y Isakova, S (2016) Kotlin in Action: Manning Publications, Versión 11.