Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

237
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!