Saltar al contenido

15 · Evaluación en Tiempo de Compilación

Funciones comptime

Declara helpers reutilizables con @comptime fn e invócalos con comptime f(x) — el call-site se convierte en un literal.

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.

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br