Saltar al contenido

Guía 5 de 36

Flujo de Control

if/else, match, for, while y loop.

En esta página

If / Else

if x > 10 {
    print("big")
} else if x > 5 {
    print("medium")
} else {
    print("small")
}

If como Expresión

if puede usarse como una expresión que devuelve un valor:

let label = if x > 10 { "big" } else { "small" }

let abs = if n < 0 { -n } else { n }

If Let

Combina coincidencia de patrones y vinculación en una sola expresión. Útil para opcionales y enums:

let maybe_val: int? = 42

if let val = maybe_val {
    print("Got value: {val}")
} else {
    print("No value")
}

Con patrones de enum:

enum Shape {
    Circle(f64),
    Square(f64),
}

let s = Shape::Circle(5.0)

if let Shape::Circle(r) = s {
    print("Circle with radius {r}")
}

Match

Coincidencia de patrones con verificación exhaustiva:

match x {
    0 => print("zero"),
    1 => print("one"),
    n if n < 0 => print("negative"),
    _ => print("other"),
}

Match como Expresión

let description = match status {
    "ok" => "Success",
    "err" => "Failure",
    _ => "Unknown",
}

Múltiples Patrones

match key {
    'w' | 'W' => move_up(),
    's' | 'S' => move_down(),
    'q' => quit(),
    _ => {},
}

Cláusulas Guard

match value {
    n if n < 0 => "negative",
    0 => "zero",
    n if n > 100 => "large",
    _ => "normal",
}

Desestructuración de Enum

enum Result {
    Ok(int),
    Err(str),
}

match result {
    Result::Ok(value) => print("Success: {value}"),
    Result::Err(msg) => print("Error: {msg}"),
}

Desestructuración de Struct

match point {
    Point { x: 0, y: 0 } => print("origin"),
    Point { x, y } if x == y => print("diagonal"),
    Point { x, y } => print("({x}, {y})"),
}

Patrones Anidados

match event {
    Event::Click { pos: Point { x, y }, button } if button == Button::Left => {
        print("clicked at ({x}, {y})")
    },
    _ => {},
}

Consulta Coincidencia de Patrones para la referencia completa de patrones.

Bucles

Bucle For con Rangos

// Exclusive range: 0 to 9
for i in 0..10 {
    print(i)
}

// Inclusive range: 0 to 10
for i in 0..=10 {
    print(i)
}

Bucle For con Colecciones

let items = ["apple", "banana", "cherry"]

for item in items {
    print(item)
}

Bucle For con Desestructuración

let pairs = [(1, "one"), (2, "two"), (3, "three")]

for (num, name) in pairs {
    print("{num}: {name}")
}

Bucle While

let mut count = 0
while count < 10 {
    print(count)
    count += 1
}

While Let

Coincidencia de patrones en una condición de bucle:

while let Some(item) = queue.pop() {
    process(item)
}

Loop (Infinito)

loop {
    let input = read_line()
    if input == "quit" {
        break
    }
    process(input)
}

Break y Continue

for i in 0..100 {
    if i % 2 == 0 {
        continue  // skip even numbers
    }
    if i > 50 {
        break     // stop at 50
    }
    print(i)
}

DOCS / OPINIÓN

¿Esta página dejó alguna pregunta?

Cuéntanos dónde te perdió la explicación. La documentación también forma parte de la experiencia del lenguaje.

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br