English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Erlang é uma linguagem de programação funcional conhecida, então você verá muitos pontos sobre como as funções funcionam no Erlang. Este capítulo introduz como usar funções no Erlang para realizar todas as operações.
A sintaxe para declaração de função é a seguinte:
FunctionName(Pattern1… PatternN) -> Body;
Aqui,
FunctionName − O nome da função é um átomo (uniquidade)
Pattern1... PatternN − Cada parâmetro é um padrão. O número de parâmetros N é o número de parâmetros da função. O nome da função é único pelo módulo, nome da função e número de parâmetros definidos. Isso é, dois funções com o mesmo nome no mesmo módulo, mas com diferentes números de parâmetros, também são consideradas duas funções diferentes.
Body − O corpo de uma cláusula é composto por uma sequência de expressões separadas por vírgulas (,)
O programa a seguir é um exemplo simples de uso de função -
-module(helloworld). -export([add/2,start/0]). add(X,Y) -> Z = X+Y, io:fwrite("~w~n",[Z]). start() -> add(5,6).
Ponto importante para o programa acima-
Definimos duas funções, uma chamada add, que precisa 2 um parâmetro, e a outra função é start;
Ambas as funções são definidas usando a função export. Se não fizermos isso, não será possível usar as funções;
Uma função pode ser chamada dentro de outra função. Aqui, a função start chama a função add;
O resultado de saída do código acima é -
11
Função Anônima
Uma função anônima é uma função que não está associada a nenhum nome. No Erlang, há ferramentas para definir funções anônimas. O programa a seguir é um exemplo de uma função anônima.
-module(helloworld). -export([start/0]). start() -> Fn = fun() -> io:fwrite("Função Anônima") end, Fn().
Ponto importante para o exemplo acima -
A função anônima é definida usando a palavra-chave fun()
A função é atribuída a uma variável chamada Fn
A função é chamada pelo nome do variável
O resultado de saída do código acima é -
Função Anônima
Função com múltiplos parâmetros
As funções Erlang podem ser definidas com zero ou mais parâmetros. Também é possível fazer sobreposição de funções, definindo uma função com o mesmo nome, desde que tenham diferentes números de parâmetros. No exemplo a seguir, cada definição da função demo é feita usando múltiplos parâmetros.
-module(helloworld). -export([add/2,add/3,start/0]). add(X,Y) -> Z = X+Y, io:fwrite("~w~n",[Z]). add(X,Y,Z) -> A = X+Y+Z, io:fwrite("~w~n",[A]). start() -> add(5,6), add(5,6,6).
No programa acima, definimos duas vezes a função add. Mas a definição da primeira função add usa dois parâmetros, enquanto a definição da segunda função add usa três parâmetros.
O resultado de saída do código acima é -
11 17
Função que usa sequência
Também em Erlang, todas as funções têm a capacidade de sequência de proteção. Isso não é nada de especial; é apenas uma expressão que é executada quando avaliada (calculada) como true.
A sintaxe para usar a função de sequência de proteção é mostrada no programa a seguir.
FunctionName(Pattern1… PatternN) [quando GuardSeq1]-> Body;
Aqui,
FunctionName − O nome da função é um átomo (uniquidade)
Pattern1... PatternN − Cada parâmetro é um padrão. O número de parâmetros N é o número de parâmetros da função. O nome da função é único pelo módulo, nome da função e número de parâmetros definidos. Isso é, dois funções com o mesmo nome no mesmo módulo, mas com diferentes números de parâmetros, também são consideradas duas funções diferentes.
Body − O corpo de uma cláusula é composto por uma sequência de expressões separadas por vírgulas (,)
GuardSeq1 − Quando a função é chamada, ela obtém a expressão calculada.
O seguinte programa é um exemplo simples de função usando sequência de proteção.
-module(helloworld). -export([add/1,start/0]). add(X) quando X>3 -> io:fwrite("~w~n",[X]). start() -> add(4).
O resultado de saída do código acima é -
4
Se a função add for chamada como add(3),este programa apresentará um erro.