catch y orelse en Zig
Dos operadores de respaldo: catch para uniones de error, orelse para opcionales.
const std = @import("std");
pub fn main() void {
// parseInt returns an error union; catch supplies the fallback.
const good = std.fmt.parseInt(i32, "42", 10) catch 0;
const bad = std.fmt.parseInt(i32, "4x2", 10) catch 0;
std.debug.print("good {d}, bad fell back to {d}\n", .{ good, bad });
// orelse does the same job for optionals.
const found = std.mem.indexOf(u8, "causeway", "use");
const at = found orelse 999;
std.debug.print("'use' found at index {d}\n", .{at});
}
Cómo funciona
parseInt(...) catch 0se traga la falla de parseo y pone un cero.- La cadena buena parsea; la mala cae al respaldo, ambas con la misma forma.
orelsehace el trabajo idéntico cuando lo que falta es null, no un error.
Palabras clave y builtins usados aquí
catchconstfni32orelsepubu8void
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 474
- Tokens
- 123
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 105 segundos.
Paso 2 de 3 en Errores; paso 8 de 27 en Fundamentos del lenguaje.