Funciones comptime
En esta página
Cuando la misma lógica de precálculo necesita llamarse en múltiples lugares,
un bloque en línea se vuelve repetitivo. La solución es declarar una función
comptime: anota la función con @comptime y podrá invocarse con
comptime f(args) en cualquier expresión. Cada llamada es resuelta por el
compilador y reemplazada por el literal correspondiente.
A diferencia de un bloque suelto, la función tiene nombre, recibe parámetros
tipados y puede componerse — puedes sumar comptime double(10) con comptime triple(4) en la misma expresión y el compilador resuelve ambas antes de
generar código.
Dos funciones @comptime combinadas en la misma expresión — el resultado es un único literal.
// Feature: comptime <expr> — call a `@comptime fn` and bake the result
// Syntax: declare with `@comptime fn`; invoke with `comptime f(x)`.
// The function runs in the compiler and the call site is replaced
// with the literal result.
// When to use: short, pure helpers — math, string formatting, table
// lookups — that you want resolved before runtime.
@comptime
fn double(n: int) -> int {
return n * 2
}
let x = comptime double(21)
print(x)
// expected: 42
// Multiple comptime calls in one expression.
@comptime
fn triple(n: int) -> int {
return n * 3
}
let y = comptime double(10) + comptime triple(4)
print(y)
// expected: 32
Una observación práctica: el lint de funciones no utilizadas puede señalar una
@comptime fn como "nunca llamada", ya que las invocaciones comptime no
aparecen como llamadas en tiempo de ejecución. Es seguro ignorar ese aviso.
Consulta también