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

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

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 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