Declaração com resolve
Fundamentos do XanaScript • Aula 12 de 20
Funções são blocos de código reutilizáveis com nome. Em vez de copiar e colar a mesma lógica, você escreve uma vez e chama quantas vezes precisar.
resolve soma(a, b) {
volta a + b
}
cria r = soma(2, 3)
grita-ae(r) // 5Por que funções existem?
Três motivos:
- Reuso — escreva uma vez, use em N lugares.
- Nomeação —
soma(a, b)diz o que faz melhor quea + bsolto no meio do código. - Testabilidade — uma função pura é fácil de testar: mesmo entrada → mesma saída.
volta (return)
O volta devolve um valor pro chamador e encerra a função:
resolve ehPar(n) {
volta n % 2 == 0
}
grita-ae(ehPar(4)) // verdadeiro
grita-ae(ehPar(7)) // falsoFunções tipadas — documentação viva
resolve soma(a: eh-numero, b: eh-numero): eh-numero {
volta a + b
}A assinatura já diz: "recebe dois números, devolve um número". O compilador valida as chamadas.
Funções genéricas
Quando a função funciona pra qualquer tipo:
resolve identidade<T>(x: T): T {
volta x
}
grita-ae(identidade(42))
grita-ae(identidade("olá"))Funções de primeira classe
Em XanaScript, funções são valores: podem ser passadas como argumento:
resolve aplicar(fn, valor) {
volta fn(valor)
}
grita-ae(aplicar((x) => x * 10, 4)) // 40Por que "primeira classe" importa?
É o que permite passar fn como parâmetro — a base de callbacks, eventos e o servidor HTTP (escuta(3000, handler) recebe uma função!). Se funções não fossem valores, você não poderia "plugá-las" em lugares.