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

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

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 Report

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 Report

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