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

184
Views
¿Una forma más sencilla de escribir x == 1 && y == 1 && z == 1 en Kotlin?

Me preguntaba si hay una forma más simple o más corta de escribir condiciones repetitivas como x == 1 && y == 1 && z == 1.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Podría considerar usar predicados usando all . Por ejemplo:

 listOf(x, y, z).all {it == 1}

Esto devolverá true cuando x==1 , y==1 y z==1 .

Si el objetivo es acortar lo que desea, no hay mucho espacio para las piernas ya que su expresión booleana ya es muy concisa. Sin embargo, algunas de las otras respuestas han ilustrado cómo hacer que lo que desea sea más legible .

over 4 years ago · Santiago Trujillo Report

0

Cuando se trata de código (exactamente) repetido, debe considerar extraer la declaración en un método y darle un nombre significativo, que sepa por el contexto en el que se usa. Esto hace que el requisito (leer el código) sea más fácil de entender, en el punto donde se usa. Y también hace que sea más fácil detectar que siempre es la misma condición.

 if (conditionName(x, y, z)) { } fun boolean conditionName(int x, int y, int z) { return x == 1 && y == 1 && z == 1; }

No puedo pensar en una declaración más corta para la condición, pero la extracción de un método mejorará la legibilidad de su código, que debería ser su objetivo general.

over 4 years ago · Santiago Trujillo Report

0

Puede crear una función de conveniencia para este tipo de código repetido (o si solo necesita que sea más legible o más seguro de editar):

 fun <T> T.allEqual(vararg items: T) = items.all { it == this } // or you could make the receiver the first parameter instead, this is just // more explicit about which item is the value being compared against 1.allEqual(x, y, z)

Pero no, no hay ninguna otra abreviatura integrada en el lenguaje, que yo sepa: ¡condiciones como x == 1 encadenadas con operadores booleanos son tan simples como pueden ser! Si desea verificar varias cosas sin repetirse, any y all una lo hacen fácil, al mismo tiempo que son flexibles para todo tipo de situaciones y permiten que el usuario combine la funcionalidad que necesita con esas funciones más generales.

Si desea específicamente una versión de all lo que hace una comparación simple con un solo valor, y no requiere crear una listOf iterable, debe escribir la suya propia con esas herramientas (que es básicamente lo que he hecho). ¡Tú decides si crees que vale la pena!

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!