English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Guard peut être utilisé pour ajouter des fonctionnalités de correspondance de modèle. En utilisant Guard, nous pouvons effectuer des tests et des comparaisons simples sur les variables du modèle.
La syntaxe générale de la directive Guard est la suivante-
function(parameter) when condition ->
Où,
Fonction(parameter) C'est la déclaration de la fonction utilisée sous conditions de protection.
Parameter −Généralement, les conditions de protection sont basées sur les paramètres.
Condition −Évaluer les conditions pour déterminer s'il faut exécuter la fonction.
Lorsque des conditions de garde sont spécifiées, il est nécessaire d'utiliser des instructions when.
Voyons un exemple simple d'utilisation des gardes-
-module(helloworld). -export([display/1,start/0]). display(N) when N > 10 -> io:fwrite("supérieur à 10"); display(N) when N < 10 -> io:fwrite("Less than 10). start() -> display(11)
Pour l'exemple ci-dessus, il convient de noter les points suivants :
La fonction display est définie avec une protection. Lorsque le paramètre n est supérieur à10Lorsque, la première déclaration de display a une protection. Par conséquent, si le paramètre est supérieur à10,le fonction sera appelée.
La fonction display a été redéfinie, mais cette fois la protection est inférieure à10。De cette manière, vous pouvez définir plusieurs fois la même fonction, chaque fonction ayant une condition de garde distincte.
La sortie du programme ci-dessus est la suivante :
supérieur à 10
Les conditions de protection peuvent également être utilisées avec des instructions if else et case pour effectuer des opérations de protection sur ces instructions. Voyons comment procéder.
La protection peut également être utilisée avec des instructions if pour que les instructions à exécuter soient basées sur des conditions de protection. Voyons comment y parvenir.
-module(helloworld). -export([start/0]). start() -> N = 9, if N > 10 -> io:fwrite("N est supérieur à 10"); true -> io:fwrite("N est inférieur à 10)") end.
Pour l'exemple ci-dessus, il convient de noter les points suivants :
La fonction de garde est utilisée avec des instructions if. Si le résultat de calcul de la fonction de garde est true, il affichera l'instruction «N est supérieur à10”。
Si le résultat de calcul de la fonction de garde est false, il affichera l'instruction «N est inférieur à10”。
La sortie du programme suivant est la suivante :
N est inférieur à 10
La protection peut également être utilisée avec des instructions case pour que les instructions à exécuter soient basées sur des conditions de protection. Voyons comment réaliser cet objectif.
-module(helloworld). -export([start/0]). start() -> A = 9, case A of {A} when A>10 -> io:fwrite("La valeur de A est supérieure à10"); _ -> io:fwrite("La valeur de A est inférieure à10)") end.
Pour l'exemple ci-dessus, il convient de noter les points suivants :
La fonction de garde est utilisée avec des instructions case. Si le résultat de calcul de la fonction de garde est true, il affichera l'instruction «La valeur de A est supérieure à10”。
Si le résultat de calcul de la fonction de garde est une autre valeur, il affichera l'instruction «La valeur de A est inférieure à10”。
La sortie du programme suivant est la suivante :
La valeur de A est inférieure à10
Il est également possible de spécifier plusieurs conditions de protection pour une fonction. La syntaxe générale d'une instruction de protection avec plusieurs conditions de protection est la suivante-
function(parameter) when condition1 , condition1 , .. conditionN ->
Où,
Fonction(parameter) −C'est la déclaration d'une fonction utilisant des conditions de protection.
Parameter −Généralement, les conditions de protection sont basées sur les paramètres.
condition1, condition1, .. conditionN −Ces sont des conditions de protection multiples appliquées aux fonctions.
Lorsque des conditions de protection sont spécifiées, l'instruction when doit être utilisée.
Voyons comment utiliser un exemple simple avec plusieurs gardes-
-module(helloworld). -export([display/1,start/0]). display(N) when N > 10 , est_integer(N) -> io:fwrite("supérieur à 10"); display(N) when N < 10 -> io:fwrite("inférieur 10). start() -> display(11)
Pour les exemples ci-dessus, il est important de noter les points suivants :
Vous remarquerez que, pour la première déclaration de la fonction display, à part N>10de plus, la condition is\u integer a été spécifiée. Par conséquent, seule la valeur de N est un entier et supérieure10seulement lorsque cette fonction est appelée.
La sortie du programme suivant est la suivante :
inférieur 10