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

213
Visualizações
¿Cuál es el equivalente de Kotlin para Java "asignar y verificar"?

En Java a veces escribo el código de la siguiente manera:

 String obj = null; while ((obj = getObject()) != null) { // do smth with obj }

En Kotlin se muestra un error en tiempo de compilación:

Las asignaciones no son expresiones y solo se permiten expresiones en este contexto

¿Cuál es el mejor equivalente en Kotlin?

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

0

Preferiría renunciar a la fantasía y hacerlo a la vieja escuela, que en cambio es más intuitiva.

 var obj = getObject(); while (obj != null) { // do smth with obj obj = getObject(); }
over 4 years ago · Santiago Trujillo Relatório

0

La solución ad-hock más simple es probablemente

 while(true) { val obj = getObj() ?: break }

Sin embargo, en mi opinión, los casos especiales se atienden mejor con funciones auxiliares especializadas. Por ejemplo, se puede leer un archivo línea por línea con un asistente readLines como se explica en una respuesta a una pregunta similar:

 reader.forEachLine { println(it) }
over 4 years ago · Santiago Trujillo Relatório

0

En los casos en que solo desea reemplazar while ((x = y.someFunction()) != null) , puede usar lo siguiente en su lugar:

 generateSequence { y.someFunction() } .forEach { x -> /* what you did in your while */ }

generateSequence le extraerá todos los valores uno por uno hasta que se alcance el primer null . Puede reemplazar .forEach con reduce o fold (o cualquier otra cosa que parezca apropiada ;-)) si desea mantener el último valor o sumar los valores a otra cosa.

Si necesita verificar algo más, puede agregar algo como takeIf , por ejemplo:

 generateSequence { y.someFunction().takeIf { /* yourCondition... */ } }

básicamente simplemente repitiendo lo que también mencioné aquí .

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