¿Ya dominas lo básico? Un curso estructurado de Kotlin es la vía rápida para dar el salto.
Ver cursos de Kotlin en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Tu primera salida (println)
- 03Trabajar con variables
- 04Condicionales (la sentencia if)
- 05Repetir con bucles (for-in)
- 06Escribir una función
- 07Trabajar con listas
- 08Bucles con while
- 09Clases (programación orientada a objetos)
- 10Gestión de errores (try-catch)
- 11Ordenar una lista
- 12Funciones recursivas
- 13Usar la biblioteca estándar
- 14La expresión when
- 15Elegir entre dos valores en una línea
- 16Herencia (extender una clase)
- 17Escribir comentarios
- 18Operadores lógicos (&&, ||, !)
- 19Constantes (val, y por qué importa)
- 20Partir y unir cadenas (split, joinToString)
- 21Escribir código a prueba de null
- 22Buscar en una lista (contains, find)
- 23Transformar una lista (map)
- 24Listas bidimensionales (datos en forma de tabla)
- 25Escribir tu propia clase de excepción
- 26Valores por defecto en los parámetros
- 27Trabajar con Set
- 28Comprobar que el código es correcto (primer paso hacia las pruebas)
- 29Funciones de orden superior (pasar una función como argumento)
- 30Pilas y colas (estructuras de datos básicas)
- 31Conversión de tipos
- 32Introducción a las expresiones regulares
- 33El algoritmo de búsqueda binaria
- 34Construir un cifrado César
- 35Entender cómo funciona la ordenación de burbuja
- 36Construir y mostrar fechas
- 37Escribir varios casos de prueba juntos
- 38Acelerar cálculos con memoización
- 39Normalizar cadenas (trim, unificar mayúsculas)
- 40Copia superficial y copia profunda
- 41Enumeraciones (enum) básicas
- 42Aplanar una lista
- 43Invertir una cadena y detectar palíndromos
- 44Emparejar dos listas (la operación zip)
- 45Redondear números
- 46Cadenas de varias líneas (comillas triples)
- 47Funciones que devuelven varios valores
- 48Calcular el MCD y el MCM
- 49Dar formato a los números
- 50Limpieza con try-finally
- 51Escribir funciones genéricas
- 52Leer y escribir archivos
- 53Generar números aleatorios
- 54Operadores a nivel de bits
- 55Leer argumentos de la línea de órdenes
- 56Esperar un tiempo determinado (Thread.sleep)
- 57Cuidado con los errores de la coma flotante
- 58Leer de la entrada estándar
- 59FizzBuzz (el ejercicio clásico)
- 60Comprobar si un número es primo
- 61Operaciones de conjuntos (unión, intersección, diferencia)
- 62Convertir entre bases (binario, hexadecimal)
- 63Comprobar el equilibrio de los paréntesis
- 64Comprobar si dos palabras son anagramas
- 65Comprobar si un año es bisiesto
- 66Convertir temperaturas
- 67Descomponer en factores primos
- 68[Aplicado] Un pequeño gestor de inventario
Escribir funciones genéricas
En esta lección escribirás una función que sirve para varios tipos sin repetirla.
fun <T : Comparable<T>> larger(a: T, b: T): T declara un tipo T que se decide en cada llamada. La parte : Comparable<T> es la restricción: solo valen tipos que sepan compararse.
El código de ejemplo compara dos números y luego dos palabras con la misma función.
El compilador lo comprueba antes de ejecutar: llamar con un tipo que no cumple la restricción da error al escribir, no en producción.
Hay una limitación heredada de la JVM que conviene conocer: los tipos genéricos se borran en tiempo de ejecución, así que dentro de la función no puedes preguntar de qué tipo es T. Kotlin ofrece una salida elegante con inline fun <reified T>, que conserva el tipo insertando el código en el punto de llamada — algo que Java no puede hacer.
Con las palabras del ejemplo hay un detalle propio del español: la comparación de cadenas usa el orden de los códigos Unicode, donde las vocales con tilde van después de la z. Así que «Ángel» no queda donde lo pondría un diccionario. Para ordenar nombres de personas hace falta un Collator con el idioma correspondiente.
🧪 Este sitio no puede compilar ni ejecutar Kotlin directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).
🔗 El mismo tema en otros lenguajes
Mira cómo se escribe lo mismo en otro lenguaje.
