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

216
Vistas
Asignación de campo de Kotlin a través de la función de alcance (Aplicar)

¿Cuál es la diferencia entre dos asignaciones de campo de este tipo? En realidad, la primera forma parece muy legible, pero me encuentro con la segunda forma en muchos ejemplos de código.

¿Hay alguna razón especial?

 class Login { var grantToken = GrantTokenRequest() fun schema(schema: String) { this.grantToken.schema = schema } } class Login { var grantToken = GrantTokenRequest() fun schema(schema: String) = apply { this.grantToken.schema = schema } }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La diferencia es el tipo de retorno del schema de función.

La primera forma devuelve Unit .

La segunda forma devuelve el tipo de lo this está en el ámbito actual. En su caso, la segunda forma devolverá el tipo de inicio de Login , por lo que la instancia de esta clase.

El segundo enfoque es más idiomático en los casos en que está "configurando un objeto". De los documentos de Kotlin sobre la aplicación

El caso común de apply es la configuración del objeto. Dichas llamadas se pueden leer como "aplicar las siguientes asignaciones al objeto [y devolver el objeto mismo]".

Una de las razones por las que el segundo enfoque es útil es porque hace posible el encadenamiento de llamadas. El término general para este tipo de encadenamiento de método "devolver esto" es "interfaz fluida" .

 val login = Login() .schema("...") .anotherFunctionOnLoginClass(...) .moreCallChaining(...)

Una nota adicional: el this usado dentro de apply lambda no es necesario, porque apply ya this establece como Receiver . El código podría simplificarse a

 fun schema(schema: String) = apply { grantToken.schema = schema }
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