Mat|r proporciona varias sentencias para el control de flujo. Estas incluyen bucles while para realizar una tarea varias veces; ‘if / if’ Else para ejecutar diferentes ramas de código basadas en ciertas condiciones; un bucle for-in que permite fácilmente iterar sobre arreglos; y una sentencia ‘try/catch’ que permite ejecutar código que está expuesto a posibles condiciones excepcionales y brinda la posibilidad de manejarlas.

Contenido

if / if else

Estas sentencias son usadas para ejecutar diferentes piezas de código basadas en ciertas condiciones, como por ejemplo si ocurre un error poder ejecutar una parte diferente de código o mostrar un mensaje. Para hacer esto, hacemos condicionales partes de nuestro código.

La sentencia if simple tiene una condición, y sólo si esa condición se cumple, se ejecuta la parte de código dentro del bloque, y luego continua la ejecución normal del programa.

Integer count = 2
count = count - 2
if (count == 0) {
  broker.ui.showAlert("Contador", "Tu contador es cero")
}
//Contador, Tu contador es cero

La sentencia if else esta formada por una condición y dos bloques de código; sólo si esa condición se cumple, se ejecuta el código dentro del primer bloque; caso contrario, se ejecuta el código del segundo bloque, el bloque else.

Integer count = 2
count = count - 1
if (count == 0) {
  broker.ui.showAlert("Contador", "Tu contador es cero")
}else {
  broker.ui.showAlert("Contador", "Tu contador es distinto de cero")
}
//Contador, Tu contador es distinto de cero

While

Un bucle while ejecuta un conjunto de sentencias hasta que la condición pase a ser falsa. Estos tipos de bucles son usados cuando el número de iteraciones no es conocido antes de que comience la primer iteración.
Este tipo de bucle comienza evaluando una condición. Si la condición es verdadera, se repite el bloque de código hasta que la condición se convierte en falsa.

Integer count = 3
while (count > 0) {
  broker.ui.showAlert("Contador", count.toString())
  count = count - 1
}
//Contador, 3
//Contador, 2
//Contador, 1

Forin

Un bucle forin es usado para iterar sobre una colección, como por ejemplo un arreglo.

Array<String> nombres = []
nombres.add("Jose")
nombres.add("Luis")
for nombre in nombres {
    broker.ui.showAlert("Hola", nombre)
}
// Hola, Jose
// Hola, Luis

Try/Catch

Éstas sentencias son usadas como mecanismo de manejo de excepciones en Mat|r y permite al desarrollador lidiar con condiciones excepcionales y manejarlas.
Estas sentencias desacoplan la detección y el manejo de esas condiciones, y automatizan la propagación de excepciones desde el punto en que se detectaron al punto de manejo. Como resultado, el código será más limpio, fácil de escribir y mantener.

Con la sentencia try se define un bloque de código que es un dominio de manejo de excepciones: código que puede potencialmente lanzar una excepción. A contnuación, dentro del catch(e) se define un bloque de código para el manejo de excepciones lanzadas en el bloque try. El parámetro de catch es la excepción lanzada en el bloque try.

Array<Integer> edades = [] //array vacio
Integer edadPromedio = 0
try {

  for edad in  edades {
      edadPromedio =  edadPromedio + edad
  }
  edadPromedio = edadPromedio / edades.size()
} catch (e) {
  broker.ui.showAlert(e.name(), e.reason())
}

//DivisionByZero,   Has been a division by zero error.