Saltar al contenido

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.

02-inline-call.zolo
Playground
// 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.

Buscar en Zolo

9 resultados

enespt-br