APUNTES KOTLIN
  • Presentación
  • Apuntes Linux
  • Apuntes Blue Team
  • Apuntes Red Team
  • Apuntes Python
  • Ricardev github
  • CURSO BÁSICO
    • Tema 1. Kotlin Básico
    • Tema 2. Variables y Tipos de Datos
    • Tema 3. Números en Kotlin
    • Tema 4. Strings en Kotlin
    • Tema 5. Condicionales
    • Tema 6. Bucles
    • Tema 7. Saltos y Returns
    • Tema 8. Arrays en Kotlin
    • Tema 9. Colecciones. Listas
    • Tema 10. Colecciones. Set
    • Tema 11. Colecciones. Mapas
    • Tema 12.Manejo de Excepciones
  • Programación Funcional
    • Tema 12. Funciones
    • Funciones de Extensión
    • Funciones de Orden Superior
    • Funciones Lambda
    • Funciones de Alcance
  • PROGRAMACIÓN ORIENTADA A OBJETOS
    • Teoría POO
    • Clases y Objetos
    • Constructores
    • Getters y Setters
    • Herencia
    • Polimorfismo
    • Herencia múltiple
    • Otros Conceptos
Powered by GitBook
On this page
  • CONCEPTO
  • IMPLEMENTACIÓN
  1. Programación Funcional

Funciones de Extensión

Explicación del concepto y uso de las funciones de extensión.

CONCEPTO

Las funciones de extensión nos permiten añadir funciones a cualquier clase aunque no tengamos acceso a su código fuente y sin tener que crear una clase que la extienda.

Se utilizan a menudo para extender las funcionalidades de los diferentes tipos de datos (que como ya sabemos, son clases en Kotlin) o para extender las funcionalidades que el framework de Android implementa.

Nada impide crear una función de extensión de una clase que nosotros mismos hayamos creado. Sin embargo, si quisiéramos extender esa clase, es tan fácil como declarar dicha función como método de la clase a extender.

El caso de uso más normal de las funciones de Extensión es cuando no tenemos acceso al código fuente o no nos interesa modificarlo.

Por eso, las clases base de Kotlin o las clases que componen el framework de Android son donde habitualmente las vamos a utilzar.

IMPLEMENTACIÓN

Para implementar una función de extensión se debe seguir la siguiente sintaxis:

fun Clase.funcion(/*...*/) {/*...*/}

Un ejemplo práctico de su uso es, por ejemplo, una función de extensión de la clase IntArray para que sume todos los elementos del Array:

fun IntArray.suma(): Int {
    var suma = 0
    for (i in this) suma += i
    return suma
}
val array = IntArray(5) {5}
println(array.contentToString()) // [5, 5, 5, 5, 5]
println(array.suma())            // 25
PreviousTema 12. FuncionesNextFunciones de Orden Superior

Last updated 2 years ago