English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Guard pode ser usado para adicionar estruturas de match pattern. Com Guard, podemos executar testes e comparações simples nas variáveis do padrão.
A sintaxe geral da instrução Guard é a seguinte-
função(parâmetro) quando condição ->
Onde,
Função(parâmetro) −Esta é a declaração da função usada em condições de proteção.
Parâmetro −Normalmente, as condições de proteção são baseadas em parâmetros.
Condição −Avaliar a condição para determinar se a função deve ser executada.
Quando especificada a condição de guarda, deve ser usada a instrução when.
Vamos ver um exemplo simples de uso de guardas-
-module(helloworld). -export([display/1, start/). display(N) when N > 0]) 10 -> io:fwrite("maior que 10") display(N) when N < 10 -> io:fwrite("Less maior que 10) start() -> display(11)
A respeito do exemplo acima, é necessário prestar atenção aos seguintes pontos:
A função display é definida com uma guarda. Quando o parâmetro n for maior que10Quando, a primeira declaração de exibição tem uma guarda. Portanto, se o parâmetro for maior que10,a função será chamada.
A função display foi redefinida, mas desta vez a proteção é menor que10。Desta forma, você pode definir várias vezes a mesma função, cada uma com uma condição de guarda separada.
A saída do programa acima é a seguinte:
maior que 10
Condições de proteção também podem ser usadas em if else e case. Vamos ver como fazer operações de proteção nessas instruções.
A guarda também pode ser usada na instrução if, para que uma série de instruções a serem executadas estejam baseadas em condições de proteção. Vamos ver como fazer isso.
-module(helloworld). -export([start/). start() -> N = 9, if N > 10 -> io:fwrite("N é maior que 10") true -> io:fwrite("N é menor que 10") end.
A respeito do exemplo acima, é necessário prestar atenção aos seguintes pontos:
A função de guarda é usada juntamente com a instrução if. Se o resultado da função de guarda for true, será exibida a instrução "N é maior que10”。
Se o resultado da função de guarda for false, será exibida a instrução "N é menor que10”。
A saída do programa acima é a seguinte:
N é menor que 10
A proteção também pode ser usada na instrução case, para que uma série de instruções a serem executadas estejam baseadas em condições de proteção. Vamos ver como alcançar esse objetivo.
-module(helloworld). -export([start/). start() -> A = 9, case A of {A} quando A>10 -> io:fwrite("O valor de A é maior que10"); _ -> io:fwrite("O valor de A é menor que10") end.
A respeito do exemplo acima, é necessário prestar atenção aos seguintes pontos:
A função de guarda é usada juntamente com a instrução case. Se o resultado da função de guarda for true, será exibida a instrução "O valor de A é maior que10”。
Se o resultado da função de guarda for outro valor, será exibida a instrução "O valor de A é menor que10”。
A saída do programa acima é a seguinte:
O valor de A é menor que10
Também pode ser especificada várias condições de proteção para a função. A sintaxe geral de uma instrução de proteção com várias condições é a seguinte-
função(parâmetro) quando condição1 , condição1 , .. condiçãoN ->
Onde,
Função(parâmetro) −Esta é a declaração da função usando condições de proteção.
Parâmetro −Normalmente, as condições de proteção são baseadas em parâmetros.
condition1, condition1, .. conditionN −Essas são condições de proteção múltiplas aplicadas a funções.
Quando a condição de proteção é especificada, é necessário usar a sentença when.
Vamos ver como usar um exemplo simples com múltiplos guards-
-module(helloworld). -export([display/1, start/). display(N) when N > 0]) 10 , is_integer(N) -> io:fwrite("maior que 10") display(N) when N < 10 -> io:fwrite("Menor que 10) start() -> display(11)
A respeito dos exemplos acima, é necessário notar os seguintes pontos:
Você notará que, além da declaração do primeiro display function, além de N>10Além da condição de above, também foi especificada a condição de is\u integer. Portanto, apenas quando o valor de N for um inteiro e maior que10apenas será executada esta função.
A saída do programa acima é a seguinte:
Menor que 10