Kotlin
readln ()
var nombre = readln()
Paquetes
Como pasa en Java, en Kotlin los paquetes se colocan
en la parte superior del archivo:
package com.example
import com.example.*
Variables
Hay dos tipos de variables, val y var.
La variable val una vez asignada solo se puede leer, es decir, una vez se le asigna
su valor no puede cambiar. val en Kotlin sería como añadir a final a una variable en Java.
var por otro lado si
podría cambiar su valor.
val numeroFinal = 2 // Deduce que el tipo es 'Int'
numeroFinal = 3 // Provocaría un error ya que no se puede
volver a asignar
var numeroVariable = 2 //
Deduce que el tipo es 'Int'
numeroVariable = 4 // No generaría un error
numeroVariable = "hola" // Provocaría un error ya que es de tipo
'Int'
val numeroTardio: Int //
Puedes asignar el valor más tarde
numeroTardio = 6
Como has visto en el bloque de
código anterior, no es necesario indicarle el tipo, ya que Kotlin puede
detectarlo automáticamente una vez que le asignas un valor.
También es posible indicar el
tipo si así lo deseas:
val numero: Int = 1 // Le
indicas explícitamente que es de tipo 'Int'
Funciones
Las funciones en Kotlin se
definen con fun
, por ejemplo vamos a hacer una función que sume dos
números y los muestre por pantalla:
fun mostrarSuma(a: Int, b: Int) {
println("La suma de $a y $b es
${a + b}")
}
Con
la siguiente función vamos a ver como devolver un valor, en este caso un
entero, añadiendo el tipo al final, en este caso Int
:
fun suma(a: Int, b: Int): Int {
return a + b
}
Otra
forma de definir esa función es la siguiente:
fun suma(a: Int, b: Int) = a + b //
Deduce el tipo 'Int'
Esta
forma es muy útil con funciones simples ya que facilita su lectura y puedes
ahorrar un montón del líneas.
Plantillas de Texto
Te habrás fijado que en una de
las funciones anteriores ya hemos una plantilla, y que gracias a ellas con
Kotlin no vamos a tener que utilizar el signo +
para encadenar textos que tanto se ha usado en
Java.
Su uso es muy simple, solo tienes
que usar el símbolo $
y el nombre de la variable:
var numero = 1
val texto = "El
número es $numero"
println(texto) //
"El número es 1"
Sentencias
Condicionales
No tiene demasiado misterio ya
que en Kotlin su sintaxis es prácticamente idéntica a Java:
fun mayorNumero(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}
Una
forma de ahorrar código sería:
fun mayorNumero(a: Int, b: Int) = if (a > b) a else b
Bucles
For
for (i in 1..3) {
print("$i ") //
"1 2 3"
}
for (i in 10 downTo 0 step 2) {
print("$i ") //
"10 8 6 4 2 0"
}
val frutas = listOf("platano", "manzana", "pera", "kiwi")
for (fruta in frutas) {
println(fruta)
}
Si quisiésemos utilizar una
plantilla de texto con un índice:
val frutas = listOf("platano", "manzana", "pera", "kiwi")
for (index in frutas.indices) {
println("La fruta en la posición
$index es ${frutas[index]}")
}
When
Esta expresión en Kotlin sería el
equivalente a Switch en Java:
fun describir(obj: Any): String =
when (obj) {
1 -> "Uno"
"hola" -> "Saludos"
is Int -> "Número
entero"
!is String -> "No
es un texto"
else -> "Desconocido"
}
Con Any
lo que le estamos indicando es que objeto puede ser
de cualquier tipo.
While
var numero = 0
while (numero!=2) {
numero = Random.nextInt(0,6)
print("$numero ")
}
Colecciones
Iterar a través de una colección:
val frutas = listOf("platano", "manzana", "pera", "kiwi")
for (fruta in frutas) {
println(fruta)
}
Para
comprobar si una colección contiene un objeto:
when {
"naranja" in frutas -> println("zumo")
"manzana" in frutas -> println("me
gusta la manzana")
}
Utilizando
expresiones lambda para filtrar y mapear una colección
frutas.filter { it.startsWith("p") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { println(it) }
Crear clases básicas y
sus instancias
En el siguiente ejemplo vas a ver como Kotlin nos
ahorra un montón de código respecto a Java, sobretodo al crear la clase, ya que
no necesitamos indicarle los getters and setters, ni colocar todos los valores
en el constructor con la palabra this.
class Rectangulo(val ancho:
Int, val largo:
Int) {
fun mostrar()
= print("La
base es de $ancho cm y la altura es de $largo cm")
}
Valores nulos y su
control
Si por algún motivo quieres que algo sea nulo, en
Kotlin puedes indicarlo mediante el símbolo ?.
Por ejemplo, si la siguiente función le pasásemos un
texto que no sea número entero, devolvería null.
val numeroString = "10" // Tipo
string
val numeroInt = numeroString.toIntOrNull() // Si es
un número entero será Int, sino será null
println(numeroInt ?: "No es un número") //
"10"
val texto = "Hola"
val numero = texto.toIntOrNull() // Será
'null' en este caso
println(numero ?: "No es un número") //
"No es un número"
Controles de tipos y
conversiones automáticas
El operador is es el encargado de comprobar si una expresión es un tipo o una
instancia. Si una variable local es inmutable o se le ha indicado el tipo
específicamente, no hay necesidad de hacer una conversión (casting) explícita.
fun obtenerTipo(valor: Any): String {
return when (valor)
{
is String
-> "String"
is Int ->
"Int"
is Boolean
-> "Boolean"
else -> "Tipo
desconocido"
}
}
Comentarios
Publicar un comentario