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.
// 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