Control Flow
Nyx ofrece el conjunto estándar de construcciones de control de flujo: ramas condicionales con if/else if/else, bucles de contador con while, e iteración con for sobre rangos y colecciones. El control de bucles usa break y continue.
Código
// Control de flujo: if/else, while, for con range, break y continue
fn main() -> int {
// if / else if / else
let x: int = 7
if x > 10 {
print("mayor que 10")
} else if x > 5 {
print("entre 5 y 10")
} else {
print("5 o menos")
}
// while que cuenta del 1 al 5
var i: int = 1
while i <= 5 {
print("while: " + int_to_string(i))
i = i + 1
}
// for con range (0..5 excluye el 5)
for n in 0..5 {
print("range: " + int_to_string(n))
}
// for con array
let colores: Array = ["rojo", "verde", "azul"]
for c in colores {
print("color: " + c)
}
// break y continue
var k: int = 0
while k < 10 {
k = k + 1
if k == 3 {
continue
}
if k == 6 {
break
}
print("k = " + int_to_string(k))
}
return 0
}
Salida
entre 5 y 10 while: 1 while: 2 while: 3 while: 4 while: 5 range: 0 range: 1 range: 2 range: 3 range: 4 color: rojo color: verde color: azul k = 1 k = 2 k = 4 k = 5
Explicación
La sentencia if evalúa una condición booleana sin paréntesis. Se pueden encadenar condiciones con else if y proveer un caso alternativo con else. Todos los cuerpos de las ramas deben ir entre llaves — no hay atajos de una sola línea.
El bucle while ejecuta su cuerpo mientras la condición sea verdadera. Como Nyx no tiene una forma incorporada for (int i = 0; i < n; i++), while cumple ese rol cuando se necesita un contador manual.
La forma for x in start..end itera sobre un rango semiabierto: 0..5 produce 0, 1, 2, 3, 4 (el 5 queda excluido). La forma for x in collection itera sobre cualquier array o valor iterable.
continue salta el resto de la iteración actual del bucle y pasa a la siguiente. break sale del bucle de inmediato. En el ejemplo, k = 3 se salta con continue, y el bucle se detiene cuando k llega a 6.