Pular para o conteúdo

15 · Avaliação em Tempo de Compilação

Funções comptime

Declare helpers reutilizáveis com @comptime fn e invoque com comptime f(x) — o call-site vira um literal.

Nesta página

Quando a mesma lógica de pré-cálculo precisa ser chamada em múltiplos lugares, um bloco inline se torna repetitivo. A solução é declarar uma função comptime: anote a função com @comptime e ela passa a poder ser invocada com comptime f(args) em qualquer expressão. Cada chamada é resolvida pelo compilador e substituída pelo literal correspondente.

Diferente de um bloco avulso, a função tem nome, recebe parâmetros tipados e pode ser composta — você pode somar comptime double(10) com comptime triple(4) na mesma expressão e o compilador resolve as duas antes de gerar código.

Duas funções @comptime combinadas na mesma expressão — o resultado é um ú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

Uma observação prática: o lint de funções não usadas pode sinalizar uma @comptime fn como "nunca chamada", pois invocações comptime não aparecem como chamadas em tempo de execução. É seguro ignorar esse aviso.

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br