typestar

if y switch en Zig

Las dos formas de ramificar producen valores, y switch debe dar cuenta de cada caso.

const std = @import("std");

pub fn main() void {
    const wind_knots: u32 = 26;

    // if is an expression: both arms produce the value.
    const call = if (wind_knots > 33) "stay in harbor" else "reef and go";
    std.debug.print("{s}\n", .{call});

    // switch must cover every case; ranges use three dots.
    const cloud_eighths: u8 = 3;
    switch (cloud_eighths) {
        0...2 => std.debug.print("clear enough to sail\n", .{}),
        3...5 => std.debug.print("broken cloud, watch it\n", .{}),
        else => std.debug.print("overcast, compass out\n", .{}),
    }
}

Cómo funciona

  1. const call = if (...) ... else ... usa if como expresión.
  2. Los rangos del switch usan 0...2 con tres puntos, inclusivo en ambos extremos.
  3. Deja un caso sin cubrir y el compilador rechaza el switch de plano — else cierra el hueco.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
525
Tokens
139
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 119 segundos.

Escribe este fragmento

Paso 1 de 3 en Control de flujo; paso 4 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →