Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

303
Vistas
Dónde declarar las funciones de extensión de Kotlin en una aplicación de Android

Supongamos que tengo el siguiente código que quiero hacer como un componente reutilizable:

 fun <T> MutableList<T>.swap(index1: Int, index2: Int) { val tmp = this[index1] // 'this' corresponds to the list this[index1] = this[index2] this[index2] = tmp }

y quiero usarlo en cualquier lugar de mi aplicación de la siguiente manera:

 val l = mutableListOf(1, 2, 3) l.swap(0, 2)

Corríjame si me equivoco, pero creo que las declaraciones de extensión de función pueden existir fuera de una clase. Entonces, en una aplicación de Android, ¿dónde colocaría esta declaración? ó acaso importa? ¿La compilación solo compilará el código independientemente de dónde se declare la extensión y la hará reutilizable globalmente o tengo que hacerla parte de una clase?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede crear algún archivo, por ejemplo, ListExt.kt cualquier lugar que desee (por ejemplo, en el paquete main_package_name/util/ListExt.kt ) y coloque la función de extensión allí y estará disponible en todo el proyecto. Entonces, el contenido del archivo ListExt.kt puede ser:

 package main_package_name.util fun <T> MutableList<T>.swap(index1: Int, index2: Int) { val tmp = this[index1] // 'this' corresponds to the list this[index1] = this[index2] this[index2] = tmp } // other extension functions on the Lists
over 4 years ago · Santiago Trujillo Denunciar

0

Pueden estar en cualquier lugar, pero parece tener sentido tener extensiones para una clase en particular en el mismo archivo y/o paquete. Por ejemplo, las extensiones de String podrían estar en StringExtensions.kt, y eso podría estar opcionalmente en un paquete de extensiones.

over 4 years ago · Santiago Trujillo Denunciar

0

Para que una extensión sea global, debe colocarla fuera de la clase

 package com.extension.globalcontext fun <T> MutableList<T>.swap(index1: Int, index2: Int)

Y para llamarlos necesitas importar el paquete

 import com.extension.globalcontext l.swap(0, 2)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda