Saltar al contenido

12 · Programación Orientada a Objetos

Arrays fijos y tamaños genéricos constantes

Compruebe el tamaño exacto de un paquete e infiéralo en funciones reutilizables.

En esta página

Un paquete tiene una cantidad fija de muestras. Conserve esa cantidad en el tipo e infiera el tamaño al llamar a una función reutilizable. El ejemplo también guarda una función y cambia una muestra sin modificar el tamaño del paquete.

Compruebe el tamaño exacto de un paquete e infiéralo en funciones reutilizables.

17-fixed-arrays.zolo
Playground
// Sum a packet whose size is checked at the boundary.

struct Buffer<const N: int> {
    bytes: [int; N]
}

fn sum<const N: int>(samples: [int; N]) -> int {
    let total = 0
    for sample in samples {
        total += sample
    }
    total
}

fn describe<const N: int>(samples: [int; N], label: str = "packet") -> str =
    "{label}: {N} samples, sum {sum(samples)}"

let packet: Buffer<3> = Buffer { bytes: [12, 18, 30] }
let tools = .{ describe: describe }
print(tools.describe(packet.bytes))
packet.bytes[0] = 15
print(describe(packet.bytes, "updated"))

El tamaño debe conocerse durante la compilación. Las funciones genéricas constantes reciben el tamaño inferido como entero inmutable; los arrays fijos rechazan operaciones que cambian su tamaño. Consulte la referencia para aritmética estática, valores predeterminados, imports y adaptadores no admitidos.

Consulta también

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br