typestar

Opcionales en Zig

?u32 es un número de amarradero o null, y el compilador no te deja olvidar cuál.

const std = @import("std");

fn findBerth(ship: []const u8) ?u32 {
    if (std.mem.eql(u8, ship, "Persephone")) return 9;
    return null;
}

pub fn main() void {
    // ?u32 holds a number or null; if unwraps it by capture.
    if (findBerth("Persephone")) |berth| {
        std.debug.print("moor at berth {d}\n", .{berth});
    }

    // orelse supplies the value for the null case.
    const anchorage = findBerth("Dreadnought") orelse 0;
    std.debug.print("unknown ships anchor at {d}\n", .{anchorage});
}

Cómo funciona

  1. ?u32 en el tipo de retorno admite null como respuesta honesta.
  2. if (findBerth(...)) |berth| desenvuelve por captura solo cuando hay valor.
  3. orelse 0 da el fondeadero para los barcos que el puerto no conoce.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
471
Tokens
117
Ritmo de tres estrellas
70 tpm

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

Escribe este fragmento

Paso 1 de 3 en Opcionales y punteros; paso 10 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →