¿Qué funciones auxiliares conoces o has utilizado en tu experiencia?
sobes.tech AI
Respuesta de la IA
-
Expresiones lambda: Acortan el código para funciones pequeñas, como manejadores de eventos o callbacks.
-
Funciones de extensión (Kotlin): Añaden nuevas funciones a clases existentes sin heredar, mejorando la legibilidad y la conveniencia.
fun String.isPalindrome(): Boolean { // Verifica si la cadena es un palíndromo return this == this.reversed() } -
Funciones en línea (Kotlin): Inserta el cuerpo de la función en el lugar de la llamada, reduciendo la sobrecarga de crear objetos de función, especialmente útil con lambdas.
inline fun measureExecutionTime(block: () -> Unit) { // Mide el tiempo de ejecución del bloque de código val startTime = System.currentTimeMillis() block() val endTime = System.currentTimeMillis() println("Tiempo de ejecución: ${endTime - startTime} ms") } -
Clases de datos (Kotlin): Generan automáticamente
equals(),hashCode(),toString(),copy(), útil para almacenar datos.data class User(val name: String, val age: Int) -
Clases selladas (Kotlin): Representan una jerarquía limitada de clases, útiles para modelar estados o eventos, especialmente en combinación con
when. -
Genéricos: Permiten crear componentes reutilizables que trabajan con diferentes tipos de datos.
public class Box<T> { // Clase genérica para almacenar cualquier tipo de dato private T data; public void setData(T data) { this.data = data; } public T getData() { return data; } } -
Operaciones con colecciones (map, filter, reduce, etc.): Métodos funcionales para procesar colecciones de datos.
val numbers = listOf(1, 2, 3, 4, 5) val squaredEvenNumbers = numbers .filter { it % 2 == 0 } // Filtra los pares .map { it * it } // Eleva al cuadrado -
Getters de recursos (Kotlin): Para obtener cadenas, colores, tamaños, etc., de los recursos.
val appName = context.getString(R.string.app_name) val primaryColor = ContextCompat.getColor(context, R.color.colorPrimary) -
Tipos nulos y llamadas seguras (Kotlin): Reducen la cantidad de
NullPointerException.val name: String? = null val length = name?.length ?: 0 // Llamada segura y operador Elvis