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