arrow_back Voltar ao curso

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.

js
resolve soma(a, b) {
  volta a + b
}

cria r = soma(2, 3)
grita-ae(r)  // 5

Por que funções existem?

Três motivos:

  1. Reuso — escreva uma vez, use em N lugares.
  2. Nomeação — soma(a, b) diz o que faz melhor que a + b solto no meio do código.
  3. 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:

js
resolve ehPar(n) {
  volta n % 2 == 0
}

grita-ae(ehPar(4))   // verdadeiro
grita-ae(ehPar(7))   // falso

Funções tipadas — documentação viva

js
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:

js
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:

js
resolve aplicar(fn, valor) {
  volta fn(valor)
}

grita-ae(aplicar((x) => x * 10, 4))  // 40

Por 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.

Comentários