Funciones de Extensión en Kotlin

Aldo Olivares
Jul 21, 2017 · 2 min read

En muchas ocasiones una clase no tiene todas las funcionalidades que nos gustaría. La solución que solemos usar es crear una nueva clase que herede de ella y posteriormente agregamos todos los atributos y métodos que necesitamos.

Aunque lo anterior funciona resulta ser exagerado en varios escenarios.

¿Para qué crear una clase completamente nueva cuando sólo necesitamos un método extra?

Los desarrolladores de Kotlin se dieron cuenta de este problema e introdujeron las Extension Functions

Funciones de Extensión en Kotlin

Las Extension Functions(a las que me referiré en este artículo como Funciones de Extensión) nos ayudan a agregar funcionalidad extra a una clase.

Digamos que necesitamos intercambiar los valores de dos elementos en un arreglo. En lenguajes como java creariamos un método estático que nos ayude a realizar esta labor parecido al siguiente:

private static void swap(int[] array, int indice1, int indice2){
int temp = array[indice1];
array[indice1] = array[indice2];
array[indice2] = temp;
}

Y para llamarlo:

int[] array = {1,2,3,4,5,6};
swap(array, 0, 1);

¿No sería mejor tener un método dentro de la clase array que hiciera esta tarea?

LLegan las Funciones de Extensión al Rescate

Con las funciones de extensión podemos agregar funcionalidad directo al arreglo de enteros sin necesidad de crear un método estático. Esto permite que el código sea mucho más legible y que el principio de la responsabilidad única se mantenga.

El código en Kotlin se vería similar a esto:

fun IntArray.swap(index1:Int, index2:Int){

val tmp = this[index1]//En este caso this hace referencia al objeto receptor
this[index1] = this[index2]
this[index2] = tmp


}

Y podemos llamar a este método desde la instancia de nuestro arreglo utilizando la notación de punto que ya todos conocemos:

val numeros = intArrayOf(4,2,4,5,1,8,9,10)

numeros.swap(0, numeros.lastIndex) //Ahora numeros contiene [10,2,4,5,1,8,9,4]

De esta forma los arreglos hacen su chamba y otras clases se ocupan de sus propios asuntos.

Si Quieres Saber Más…

Puedes leer la documentación oficial sobre Extension Functions aquí

¡Saludos!

)
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade