Uma função já foi introduzida: main()
- o ponto de partida de todo programa
programa D. Uma função pode retornar um valor (ou ser declarada com void
se nada for retornado) e aceitar um número arbitrário de argumentos:
int add(int lhs, int rhs) {
return lhs + rhs;
}
auto
Se o tipo de retorno for definido como auto
, o compilador D infere o tipo de retorno
automaticamente. Portanto, várias instruções return
devem retornar valores com
tipos compatíveis.
auto add(int lhs, int rhs) { // retorna `int`
return lhs + rhs;
}
auto lessOrEqual(int lhs, int rhs) { // retorna `double`
if (lhs <= rhs)
return 0;
else
return 1.0;
}
As funções podem, opcionalmente, definir argumentos padrão. Isso evita o trabalho tedioso de declarar sobrecargas redundantes.
void plot(string msg, string color = "red") {
...
}
plot("D rocks");
plot("D rocks", "blue");
Uma vez que um argumento padrão tenha sido especificado, todos os argumentos seguintes também devem ser argumentos padrão.
As funções podem até ser declaradas dentro de outras funções, onde podem ser usadas localmente e não são visíveis para o mundo externo. Essas funções podem até mesmo ter acesso a objetos que são locais para escopo da função principal:
void fun() {
int local = 10;
int fun_secret() {
local++; // that's legal
}
...
Essas funções aninhadas são chamadas de delegates e serão explicadas com mais detalhes em breve.