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

214
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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