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
- El enum declara tres tags;
.reefernombra uno con el punto adelante. - El
switch (self)del método debe cubrir cada tag — agrega uno y esto deja de compilar. @tagNamedevuelve el tag a su escritura en el código fuente.
Palabras clave y builtins usados aquí
constenumfnpubreturnswitchu8void
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.
Paso 2 de 3 en Structs y enums; paso 14 de 27 en Fundamentos del lenguaje.