typestar

Enums en Zig

Un enum de carga con su propio método, recorrido por un switch exhaustivo.

const std = @import("std");

const Cargo = enum {
    general,
    reefer,
    hazmat,

    fn stowage(self: Cargo) []const u8 {
        return switch (self) {
            .general => "any hold",
            .reefer => "plug it in",
            .hazmat => "deck only",
        };
    }
};

pub fn main() void {
    const load: Cargo = .reefer;
    std.debug.print("{s} -> {s}\n", .{ @tagName(load), load.stowage() });
}

Cómo funciona

  1. El enum declara tres tags; .reefer nombra uno con el punto adelante.
  2. El switch (self) del método debe cubrir cada tag — agrega uno y esto deja de compilar.
  3. @tagName devuelve el tag a su escritura en el código fuente.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
339
Tokens
110
Ritmo de tres estrellas
70 tpm

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

Escribe este fragmento

Paso 2 de 3 en Structs y enums; paso 14 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →

Enums en otros lenguajes