English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Guard Erlang

Guard se puede utilizar para agregar estructuras de coincidencia de patrones. Con Guard, podemos realizar pruebas y comparaciones simples de variables en los patrones.

La gramática general de la declaración Guard es la siguiente-

función(parámetro) cuando condición ->

Dónde,

  • Función(parámetro) −Esta es la declaración de función utilizada en condiciones de protección.

  • Parámetro −Generalmente, las condiciones de protección se basan en los parámetros.

  • Condición −Evaluar la condición para determinar si se debe ejecutar la función.

  • Cuando se especifica una condición de guardia, debe usarse la declaración when.

Vamos a ver un ejemplo simple de cómo usar la guardia-

instancia

-module(helloworld). 
-export([display/1, start/0]). 
display(N) when N > 10 ->   
   io:fwrite("mayor que 10"); 
display(N) when N < 10 -> io:fwrite("Menos 
   mayor que 10). 
start() -> 
   display(11)

Con respecto al ejemplo anterior, hay varios puntos que deben considerarse:

  • La función display se define con una guardia.10Por lo tanto, si el parámetro es mayor que10y se llamará a la función.

  • Se redefine la función display, pero esta vez la protección es menor que10。De esta manera, puede definir múltiples veces la misma función, cada una con una condición de guardia única.

La salida del programa anterior es la siguiente:

mayor que 10

Las condiciones de protección también se pueden utilizar en declaraciones de if else y caso. Vamos a ver cómo realizar operaciones de protección en estas declaraciones.

Guard de la declaración de if

La guardia también se puede utilizar en declaraciones de if para que una serie de declaraciones a ejecutar se basen en condiciones de protección. Vamos a ver cómo lograr esto.

-module(helloworld). 
-export([start/0]). 
start() -> 
   N = 9, 
   if 
      N > 10 -> 
         io:fwrite("N es mayor que", 10"); 
      true -> 
         io:fwrite("N es menor que", 10)", 
   fin.

Con respecto al ejemplo anterior, hay varios puntos que deben considerarse:

  • La función de guardia se utiliza junto con la declaración de if. Si el resultado de la función de guardia es verdadero, se mostrará la declaración “N es mayor que10”。

  • Si el resultado de la función de guardia es falso, se mostrará la declaración “N es menor que10”。

La salida del programa anterior es la siguiente:

salida

N es menor que 10

Guard de la declaración de caso

La protección también se puede utilizar en declaraciones de caso para que una serie de declaraciones a ejecutar se basen en condiciones de protección. Vamos a ver cómo lograr este objetivo.

instancia

-module(helloworld). 
-export([start/0]). 
start() -> 
   A = 9, 
   caso A de {A} cuando A>10 -> 
      io:fwrite("El valor de A es mayor que",10");  _ -> 
      io:fwrite("El valor de A es menor que",10)", 
   fin.

Con respecto al ejemplo anterior, hay varios puntos que deben considerarse:

  • La función de guardia se utiliza junto con la declaración de caso. Si el resultado de la función de guardia es verdadero, se mostrará la declaración “El valor de A es mayor que10”。

  • Si el resultado de la función de guardia es otro valor, se mostrará la declaración “El valor de A es menor que10”。

La salida del programa anterior es la siguiente:

salida

El valor de A es menor que10

Condiciones de guardia múltiples

También se pueden especificar múltiples condiciones de protección para una función. La sintaxis general de una declaración de protección con múltiples condiciones de protección es la siguiente-

función(parámetro) cuando condición1 , condición1 , ... condiciónN ->

Dónde,

  • Función(parámetro) −Esta es la declaración de la función utilizando condiciones de protección.

  • Parámetro −Generalmente, las condiciones de protección se basan en los parámetros.

  • condition1, condition1, .. conditionN −Estas son condiciones de protección múltiples aplicadas a las funciones.

  • Cuando se especifica una condición de protección, debe usarse la sentencia when.

Vamos a ver cómo se utiliza un ejemplo simple con múltiples guardianes-

instancia

-module(helloworld). 
-export([display/1, start/0]). 
display(N) when N > 10 , es_integer(N) -> 
   io:fwrite("mayor que 10"); 
display(N) when N < 10 -> 
   io:fwrite("menor 10). 
   
start() -> 
   display(11)

Con respecto a los ejemplos anteriores, hay algunos puntos que deben considerarse:

  • Notará que, para la declaración de la función display primero, además de N>10La condición de is\u integer se especificó además de la condición.10sólo se ejecutará esta función.

La salida del programa anterior es la siguiente:

salida

menor 10