Kotlin: Sintaxis
Kotlin sintaxis: Aprende las reglas y estructuras clave de Kotlin. Una guía detallada sobre variables, funciones, clases y más en este lenguaje moderno.
Aprende Kotlin GRATIS y certifícateKotlin es un lenguaje de programación moderno que ha ganado popularidad gracias a su concisión y seguridad. En esta guía, exploraremos en detalle la sintaxis de Kotlin, proporcionando una base sólida para desarrollar aplicaciones eficientes y robustas.
Declaración de variables
En Kotlin, las variables se declaran utilizando val
o var
:
val
: declara una variable inmutable (constante).var
: declara una variable mutable.
Ejemplo:
val nombre: String = "Ana"
var edad: Int = 30
Si el tipo puede ser inferido, se puede omitir:
val nombre = "Ana"
var edad = 30
Tipos de datos básicos
Kotlin proporciona varios tipos de datos integrados:
- Números enteros:
Byte
,Short
,Int
,Long
- Números de coma flotante:
Float
,Double
- Caracteres:
Char
- Cadenas de texto:
String
- Booleanos:
Boolean
Ejemplo:
val numeroEntero: Int = 100
val numeroDecimal: Double = 123.45
val caracter: Char = 'A'
val cadena: String = "Hola, Kotlin"
val booleano: Boolean = true
Cadenas de texto
Las cadenas se pueden declarar con comillas dobles. Para cadenas multilínea, se utilizan comillas triples ("""
).
Interpolación de cadenas:
val nombre = "Ana"
val saludo = "Hola, $nombre"
Cadenas multilínea:
val texto = """
|Primera línea
|Segunda línea
""".trimMargin()
Funciones
Las funciones en Kotlin se declaran utilizando la palabra clave fun
.
Ejemplo básico:
fun sumar(a: Int, b: Int): Int {
return a + b
}
Funciones de expresión única:
fun multiplicar(a: Int, b: Int) = a * b
Estructuras de control
Condicionales
If como expresión:
val max = if (a > b) a else b
When
El bloque when
es similar a switch
en otros lenguajes.
Ejemplo:
when (x) {
1 -> print("Uno")
2 -> print("Dos")
in 3..5 -> print("De tres a cinco")
else -> print("Otro número")
}
Bucles
For:
for (item in coleccion) {
println(item)
}
While y do-while:
while (x > 0) {
x--
}
do {
val y = obtenerValor()
} while (y != null)
Clases y objetos
Declaración de clases
class Persona(val nombre: String, var edad: Int)
Instanciación
val persona = Persona("Ana", 30)
Propiedades y métodos
class Rectangulo(val ancho: Double, val alto: Double) {
val area get() = ancho * alto
fun perimetro() = 2 * (ancho + alto)
}
Herencia
Las clases en Kotlin son finales por defecto. Para permitir la herencia, se utiliza la palabra clave open
.
Clase base:
open class Forma
Clase derivada:
class Circulo(val radio: Double) : Forma()
Interfaces
Las interfaces pueden contener definiciones de métodos abstractos y sus implementaciones.
interface Dibujable {
fun dibujar()
}
class Cuadrado : Dibujable {
override fun dibujar() {
// Implementación
}
}
Funciones Lambda
Las funciones lambda son funciones anónimas.
Ejemplo:
val suma = { a: Int, b: Int -> a + b }
println(suma(3, 4)) // Imprime 7
Uso con colecciones:
val numeros = listOf(1, 2, 3, 4, 5)
val pares = numeros.filter { it % 2 == 0 }
Funciones de orden superior
Las funciones de orden superior aceptan otras funciones como parámetros o retornan funciones.
Ejemplo:
fun operar(a: Int, b: Int, operacion: (Int, Int) -> Int): Int {
return operacion(a, b)
}
val resultado = operar(5, 3) { x, y -> x * y }
println(resultado) // Imprime 15
Extensiones
Las funciones de extensión permiten agregar funcionalidades a clases existentes sin herencia.
Ejemplo:
fun String.saludar() = "Hola, $this"
println("Mundo".saludar()) // Imprime "Hola, Mundo"
Data Classes
Las data classes son útiles para almacenar datos y proporcionan implementaciones automáticas de métodos comunes.
Declaración:
data class Usuario(val nombre: String, val email: String)
Uso:
val usuario1 = Usuario("Ana", "ana@example.com")
val usuario2 = usuario1.copy(email = "ana.nueva@example.com")
Null Safety
Kotlin incorpora seguridad contra nulls en el sistema de tipos.
Variables que pueden ser null:
var nombre: String? = null
Operador Elvis (?:
):
val longitud = nombre?.length ?: 0
Casting seguro (as?
):
val objeto: Any = "Kotlin"
val cadena: String? = objeto as? String
Operador Let
El operador let
es útil para ejecutar un bloque de código en el contexto de un objeto.
Ejemplo:
nombre?.let {
println("El nombre tiene ${it.length} caracteres")
}
Coroutines
Las coroutines permiten escribir código asíncrono de manera secuencial.
Ejemplo básico:
import kotlinx.coroutines.*
fun main() = runBlocking {
launch {
delay(1000L)
println("Coroutines en Kotlin")
}
println("Comenzando")
}
Parámetros por defecto y nombrados
Las funciones pueden tener parámetros con valores por defecto.
Ejemplo:
fun saludar(nombre: String, mensaje: String = "Hola") {
println("$mensaje, $nombre")
}
saludar("Ana") // Imprime "Hola, Ana"
Parámetros nombrados:
saludar(mensaje = "Buenos días", nombre = "Luis")
Operador Infix
Permite definir funciones que pueden ser llamadas sin paréntesis ni puntos.
Ejemplo:
infix fun Int.sumar(valor: Int): Int = this + valor
val resultado = 5 sumar 10
println(resultado) // Imprime 15
Sobrecarga de operadores
Kotlin permite sobrecargar operadores para clases.
Ejemplo:
data class Punto(val x: Int, val y: Int) {
operator fun plus(otro: Punto) = Punto(x + otro.x, y + otro.y)
}
val punto1 = Punto(2, 3)
val punto2 = Punto(4, 5)
val suma = punto1 + punto2
println(suma) // Imprime Punto(x=6, y=8)
Lecciones de este módulo de Kotlin
Lecciones de programación del módulo Sintaxis del curso de Kotlin.
Ejercicios de programación en este módulo de Kotlin
Evalúa tus conocimientos en Sintaxis con ejercicios de programación Sintaxis de tipo Test, Puzzle, Código y Proyecto con VSCode.