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
const call = if (...) ... else ...usa if como expresión.- Los rangos del
switchusan0...2con tres puntos, inclusivo en ambos extremos. - Deja un caso sin cubrir y el compilador rechaza el switch de plano —
elsecierra el hueco.
Palabras clave y builtins usados aquí
constelsefnifpubswitchu32u8void
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.
Paso 1 de 3 en Control de flujo; paso 4 de 27 en Fundamentos del lenguaje.