Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

300
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda