typestar

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

  1. week[2..5] toma prestados tres días del arreglo como []i32.
  2. .len viaja con el slice; indexar se verifica en las builds seguras.
  3. Escribir midweek[0] escribe el arreglo de abajo — mismos bytes, dos nombres.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

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

← Anterior Siguiente →

Slices en otros lenguajes