Fundamentos del lenguaje
27 pasos en 9 series de Kotlin.
Kotlin es la respuesta pragmática de JetBrains a Java: un lenguaje de tipado estático para la JVM (y más allá) que conserva la plataforma y suelta la ceremonia. Desde que Google lo hizo lenguaje preferido para Android en 2019 se volvió la forma por defecto en que decenas de miles de equipos escriben para el teléfono en tu bolsillo, mientras Spring y los equipos de servidor lo adoptaron por la misma razón por la que lo construyó la empresa del IDE: menos boilerplate, seguridad ante null en el sistema de tipos, e interoperabilidad total con cada biblioteca Java jamás publicada.
Este tour cubre el núcleo en piezas del tamaño de una práctica: val y var, plantillas de string, if y when como expresiones, rangos, funciones con valores por defecto y argumentos con nombre, lambdas y cadenas de colecciones, data classes y jerarquías selladas, los operadores de seguridad ante null, funciones de alcance, desestructuración, funciones operator e infix, genéricos y delegación con by. El Bis son tres programas completos — una tabla de frecuencia de palabras, un boletín de calificaciones y un resumen de temperaturas — cada uno ejercitando lo que las series enseñaron.
Valores
- La forma del programaEl programa Kotlin más pequeño: sin clase, sin línea de package, solo main.
- Valores y variablesval para lo que nunca se mueve, var para lo poco que debe cambiar.
- Plantillas de stringInterpolación con $, expresiones con llaves y strings crudos multilínea.
Control de flujo
- if es una expresiónKotlin no tiene ternario porque if ya devuelve un valor.
- whenEl switch que empareja rangos, listas de valores y condiciones sueltas.
- Rangos y buclesLos rangos son valores, y for itera todo lo que provea uno.
Funciones
- Valores por defecto y argumentos con nombreLas firmas cargan los valores por defecto y las llamadas quedan cortas.
- LambdasValores de función entre llaves, con it en lugar del parámetro único.
- Funciones de extensiónAgrega funciones con aspecto de miembro a tipos que no son tuyos.
Colecciones
- Listas y mapsDe solo lectura por defecto, mutables a pedido.
- Cadenas de coleccionesfilter, map y compañía se leen de izquierda a derecha y nunca mutan.
- Agrupar y ordenarOrdena una lista por cualquier clave, o cubetéala por una.
Clases y objetos
- Data classesUna palabra clave compra equals, hashCode, toString, copy y desestructuración.
- Jerarquías selladasUn conjunto cerrado de casos que el compilador revisa por exhaustividad.
- Objects y companionsSingletons con object, estáticos con companion object.
Seguridad ante null
- Tipos anulablesnull está en el sistema de tipos: String? lo admite, String jamás.
- Smart castsPasar una prueba is estrecha el tipo por el resto de la rama.
- Nulls en coleccionesParsea entrada sucia sin un solo try/catch.
Idiomas del lenguaje
- Funciones de alcanceapply, let y also: bloques chicos que mantienen la configuración cerca.
- DesestructuraciónDesempaca pares, cabezas de lista y entradas de map donde aterrizan.
- Operadores e infixEnseña + a un tipo nuevo, o deja una función entre sus operandos.
Genéricos y delegación
- GenéricosParámetros de tipo elegidos en la llamada, acotados donde hace falta.
- Delegación con byReenvía una interfaz completa a una instancia envuelta en una cláusula.
- Builders y joinToStringFormatea colecciones sin bucles, arma strings sin concatenación.
Bis
- word_freq.ktUna tabla de frecuencia de palabras con split, un map de conteo y orden doble.
- grade_report.ktBoletines desde un roster de data classes, una escalera when y format.
- temp_stats.ktUna semana de temperaturas: extremos, media, gráfico de barras y saltos.