El uso de Kotlin Ranges nos permite trabajar con conceptos fundamentales como las sentencias de control pero utilizando un lenguaje más moderno como Kotlin a la hora de simplificar la sintaxis y compactar el código. Vamos a ver un ejemplo sencillo partiendo de un caso de if/else clásico de manejo de notas . Para ello vamos a construir en un primer lugar el código en Java .
package com.arquitecturajava;
public class Principal5 {
public static void main(String[] args) {
int nota = 3;
if (nota >= 0 && nota < 2) {
System.out.println("muy mal");
} else if (nota > 2 && nota <= 4) {
System.out.println("has suspendido");
} else if (nota >= 5 && nota < 8) {
System.out.println("buen examen");
} else {
System.out.println("genial");
}
}
}
En este caso estamos ante un bloque if/else que se encarga de mostrarnos por la consola una nota dependiendo del valor inicial en este caso imprime el valor de has suspendido:

Kotlin Ranges y estructura de control
Las estructras de control en kotlin se pueden generar de una forma más compacta a través del uso de rangos. Un rango no es ni más ni menos que un conjunto de valores soportados en este caso números enteros.
val numeros:Int:Range=1..5

Este concepto de Rango se puede encajar perfectamente dentro de nuestra estructura if/else pero usando Kotlin como lenguaje.
var nota = 3
var mensaje=if (nota in 1..2) {
"muy mal"
} else if (nota in 3..4) {
"mal"
} else if (nota in 5..7) {
"ok"
} else {
"genial"
}
print(mensaje)
Acabamos de construir una estructura que nos permite generar de una forma más compacta nuestro código y sobre todo más sencilla de entender ya que usamos if/else combinado con rangos. Esta sintaxis la podemos mejorar y compactar todavía más usando la clausula when de Kotlin.
var nota = 9
var mensaje=when (nota) {
in 1..2->"muy mal"
in 3..4->"mal"
in 5..7->"ok"
else->"genial"
}
print(mensaje)
Es aquí donde la sencillez y elegancia de Kotlin destaca y un código que en Java son unas 23 lineas y que cuesta entender de un primer vistazo. Kotlin lo reduce a 9 y lo clarifica mucho más:
Deja una respuesta