Operador Condicional Ternario en Kotlin 1.3.6
En esta página:
Hay algunos Lenguajes de Programación que suelen no tener ciertas características nativas en su estructura, uno de estos es Kotlin, este de Lenguaje de Programación multiplataformas hasta la actualidad de este Post, no cuenta con Operador Ternario, quizás en futuras versiones los Desarrolladores que dan Soporte a Kotlin, agreguen esta característica, en este Post quiero compartirte una solución que puede ayudarte a trabajar con Operadores Ternarios.
Si deseas conocer mas sobre Kotlin, te recomiendo leer el artículo Que es Kotlin y otros detalles, en este Post explico mas a fondo sobre este genial Lenguaje de Programación multiplataforma.
Operador Ternario en Kotlin
Bueno tal como menciono al inicio de este Post en Kotlin no hay Operador Ternario nativamente, pero podemos hacer uso de declaraciones if y when para cubrir esta necesidad y te mostrare algunas maneras diferentes de imitar el Operador Ternario.
A diferencia de otros Lenguajes de Programación las declaraciones if y when en Kotlin son expresiones, al resultado de estas expresiones le podemos asignar una variable.
Usando if – else
Puedo hacer uso de la expresión if para imitar un operador ternario:
1 2 3 |
val resultado = if (a) "yes" else "no" |
En la expresión anterior, si if es verdadero, la variable resultado se establece en si o de lo contrario se establece en no.
Cabe señalar que el tipo de resultado depende de la expresión que hay dentro de la variable resultado, por ejemplo, si en nuestra variable resultado tenemos un booleano, el resultado también será un booleano:
1 2 3 |
val resultado: Boolean = if (a == b) true else false |
Usando when
En Kotlin tambien podemos hacer uso de la expresión when para crear un operador pseudoternario:
1 2 3 4 5 6 |
val resultado = when(a) { true -> "yes" false -> "no" } |
Puedes ver en el código anterior, el código es simple, directo y fácil de leer. Si a es verdadero (true), le asigno al resultado el valor yes y si a es falso (false) pues le asigno al resultado no.
La Tentación de usar DSL en Kotlin
En Kotlin puede que te llame la tentación de hacer uso de un DSL (Domain Specific Lenguage o Lenguaje Específico de Dominio) el cual te permite trabajar con un lenguaje especializado para desarrollar un módulo específico o dar solución a una parte de tu aplicación, por ejemplo en nuestra aplicación podemos hacer uso de la siguiente consulta con el Lenguaje SQL:
1 2 3 |
SELECT postre.nombre, postre.precio FROM postres ORDER BY postres.precio DESC |
Mediante DSL puedes trabajar con otros Lenguajes de Programación o Herramientas para dar una solución a una parte de tu aplicación, el ejemplo anterior es una sencilla consulta SQL que puede funcionar sin problemas en Kotlin pero hasta la fecha de este Post, Kotlin presenta ciertas restricciones que no te permiten hacer uso de DSL y Operadores Ternarios.
Por ende debemos evitar hacer uso de DSL por el momento hasta que Kotlin en futuras versiones añada una solución nativa a este requerimiento.
Conclusión
Como explique en este Post, Kotlin aún no cuenta con un Operador Ternario nativo, las alternativas que podemos usar para solucionar son las expresiones if y when, las cuales menciono en este Post.
Hasta la fecha de este Post, el Lenguaje de Programación Kotlin se encuentra en la versión 1.3 y a mi parecer esta en sus primeras versiones, esto quiere decir que conforme Kotlin vaya madurando, en próximas versiones pueden añadir nuevas funcionalidades como los Operadores Ternarios.
Nota(s)
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
- El código expuesto en este artículo puede ser modificado, dejar de existir o continuar en el futuro, esto no depende de nosotros si no de los Desarrolladores que dan Soporte a Kotlin, que suelen cambiar la estructura de las expresiones y el código en futuras versiones de Kotlin
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.
- Kotlin
- 05-01-2020
- 28-10-2022
- Crear un Post - Eventos Devs - Foro
Social
Redes Sociales (Developers)
Redes Sociales (Digital)