Lição 2: Funções como contratos

Uma função é uma fronteira: recebe dados, aplica uma regra e devolve um resultado. Em código de produção, a assinatura é documentação executável do contrato dessa fronteira.

Objetivo

Em uma frase: declarar funções com assinaturas legíveis e tipos explícitos.

Código

func saudacao(nome: str): str {
    return "Olá, " + nome
}

func dobra(valor: int): int {
    return valor * 2
}

Tipos vêm após os parâmetros e depois dos : no retorno. Quando uma função fizer parte da API pública, a visibilidade deve seguir a forma suportada pela versão do compilador usada no projeto.

Experimente

Chame dobra com um número e depois tente passar uma str. O compilador impede o erro na hora, antes mesmo de rodar.

Dica

Uma assinatura explícita não substitui testes de comportamento. Ela elimina, porém, uma classe inteira de erros antes que os testes ou o programa sejam executados.

Assinaturas explícitas fazem a intenção do código aparecer na própria definição. Na próxima lição, vamos perguntar quem pode modificar cada dado e por quanto tempo.