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

236
Visualizações
Diferencia entre la función de extensión privada de nivel superior y la función de extensión privada dentro de la clase

Actualmente estamos cambiando nuestro proyecto a Kotlin y nos encontramos con la siguiente pregunta:

Necesitamos una cierta función de extensión solo dentro de una clase dada. Por lo tanto, tenemos dos posibilidades: (1) Declarar private la función de extensión en el nivel superior del archivo o (2) declarar private la función de extensión dentro de la clase.

Siguiendo un MCVE :

Ejemplo de nivel superior (archivo C1.kt ):

 private fun String.double() = this.repeat(2) class C1 { init { println("init".double()) } }

Ejemplo de clase interna (archivo C2.kt ):

 class C2 { private fun String.double() = this.repeat(2) init { println("init".double()) } }

Preguntas:

  1. ¿Hay alguna diferencia entre esos dos enfoques, excepto que en C1.kt la función de extensión String.double() también sería visible para otros posibles miembros del archivo (como otras clases en el mismo archivo)?

  2. Dado que queremos lograr un código "lo más kotlinic posible", nos gustaría saber cuál de los dos enfoques es el sugerido. ¿Hay alguna sugerencia oficial/guía de estilo sobre el ejemplo anterior? Creo que se considera una buena práctica declarar las funciones de extensión lo más cerca posible de su uso previsto, por lo que en el ejemplo anterior se sugeriría la estructura de C2 .

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

  1. ¿Hay alguna diferencia entre esos dos enfoques, excepto que en C1.kt la función de extensión String.double() también sería visible para otros posibles miembros del archivo (como otras clases en el mismo archivo)?

Hay una diferencia: al especificar una función de extensión dentro de la clase (en su ejemplo C2 ), entonces, además, tiene acceso a la instancia de esta clase con la sintaxis calificada this (en su ejemplo this@C2 ).

  1. Dado que queremos lograr un código "lo más kotlinic posible", nos gustaría saber cuál de los dos enfoques es el sugerido. ¿Hay alguna sugerencia oficial/guía de estilo sobre el ejemplo anterior? Creo que se considera una buena práctica declarar las funciones de extensión lo más cerca posible de su uso previsto, por lo que en el ejemplo anterior se sugeriría la estructura de C2 .

Buena pregunta. Personalmente, pondría las funciones de extensión fuera de la clase, ya que (normalmente) especifican un comportamiento relacionado con el tipo extendido y no con el tipo de la clase donde se usan. Sin embargo, si necesita información relacionada con la clase dentro de la función de extensión, la especificaría dentro de la clase.

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