Slices en Zig
Un slice es un puntero más un largo sobre memoria que ya existe.
const std = @import("std");
pub fn main() void {
var week = [_]i32{ 61, 68, 74, 79, 72, 65, 58 };
// A slice is a pointer plus a length onto existing memory.
const midweek: []i32 = week[2..5];
std.debug.print("midweek: {any}\n", .{midweek});
std.debug.print("len {d}, first {d}\n", .{ midweek.len, midweek[0] });
// Writing through the slice writes the array underneath.
midweek[0] += 1;
std.debug.print("warmed wednesday: {d}\n", .{week[2]});
}
Cómo funciona
week[2..5]toma prestados tres días del arreglo como[]i32..lenviaja con el slice; indexar se verifica en las builds seguras.- Escribir
midweek[0]escribe el arreglo de abajo — mismos bytes, dos nombres.
Palabras clave y builtins usados aquí
constfni32pubvarvoid
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 448
- Tokens
- 127
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 109 segundos.
Paso 3 de 3 en Opcionales y punteros; paso 12 de 27 en Fundamentos del lenguaje.