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

Guard Erlang

Guard — это структура, которую можно использовать для добавления функции соответствия шаблону. С помощью Guard мы можем выполнять простые тесты и сравнения переменных в шаблоне.

Общий синтаксис Guard statements是这样的-

function(parameter) when condition ->

Где,

  • Функция(parameter) −Это функция declarations, используемая в условиях защиты.

  • Parameter Обычно, условия защиты основаны на параметрах.

  • Условие −Оценка условий, чтобы определить, следует ли выполнять функцию.

  • Когда указаны условия защиты, необходимо использовать предложение when.

Давайте посмотрим, как использовать простые примеры с защитниками-

Ин实例

-module(helloworld). 
-export([display/1, start/0]). 
display(N) when N > 10 ->   
   io:fwrite("Больше 10"); 
display(N) when N < 10 -> io:fwrite("Less 
   больше 10"). 
start() -> 
   display(11).

Относительно вышеуказанного примера, необходимо учитывать следующие моменты:

  • Функция display определена вместе с условием защиты. Когда параметр n больше 10, первый оператор display имеет защиту. Таким образом, если параметр больше 10, вызывается эта функция.

  • Функция display была заново определена, но на этот раз защита составляет менее 10. Таким образом, можно多次 определять одну и ту же функцию, у каждой из которых есть отдельное условие защиты.

Вывод программы выглядит следующим образом:

больше 10

Условия защиты также могут использоваться в операторах if else и case. Давайте посмотрим, как можно выполнить операции защиты для этих операторов.

Условия защиты в операторе if

Условия защиты также могут использоваться в операторе if, чтобы执行的 набор инструкций основывался на условиях защиты. Давайте посмотрим, как это можно сделать.

-module(helloworld). 
-export([start/0]). 
start() -> 
   N = 9, 
   if 
      N > 10 -> 
         io:fwrite("N больше 10"); 
      true -> 
         io:fwrite("N меньше 10") 
   end.

Относительно вышеуказанного примера, необходимо учитывать следующие моменты:

  • Функция защиты используется вместе с оператором if. Если результат вычисления функции защиты равен true, то будет отображаться сообщение «N больше 10».

  • Если результат вычисления функции защиты равен false, то будет отображаться сообщение «N меньше 10».

Вывод программы выше выглядит следующим образом:

Вывод

N меньше 10

Условия защиты в операторе case

Защита также может использоваться в операторе case, чтобы执行的 набор инструкций основывался на условиях защиты. Давайте посмотрим, как это можно сделать.

Ин实例

-module(helloworld). 
-export([start/0]). 
start() -> 
   A = 9, 
   case A of {A} when A>10 -> 
      io:fwrite("Значение A больше 10"); _ -> 
      io:fwrite("Значение A меньше 10") 
   end.

Относительно вышеуказанного примера, необходимо учитывать следующие моменты:

  • Функция защиты используется вместе с оператором case. Если результат вычисления функции защиты равен true, то будет отображаться сообщение «Значение A больше 10».

  • Если результат вычисления функции защиты иного значения, то будет отображаться сообщение «Значение A меньше 10».

Вывод программы выше выглядит следующим образом:

Вывод

Значение A меньше 10

Множественные условия защиты

Можно также指定多个 условия защиты для функции. Общий синтаксис защиты с несколькими условиями защиты:

функция(parameter) when condition1, condition1, .. conditionN ->

Где,

  • Функция(parameter) −Это функция объявления защиты, использующая условия защиты.

  • Parameter Обычно, условия защиты основаны на параметрах.

  • condition1, condition1, .. conditionN −Эти являются множественными защитными условиями, применяемыми к функции.

  • При указании защитных условий необходимо использовать оператор when.

Давайте посмотрим, как использовать простые примеры с несколькими защитными условиями-

Ин实例

-module(helloworld). 
-export([display/1, start/0]). 
display(N) when N > 10, is_integer(N) -> 
   io:fwrite("Больше 10"); 
display(N) when N < 10 -> 
   io:fwrite("Меньше 10"). 
   
start() -> 
   display(11).

Обратите внимание на以下几点 по поводу вышеуказанного примера:

  • Вы заметите, что для первого объявления функции display, кроме условия N>10, также указано условие is\u integer. Таким образом, функция выполняется только при условии, что значение N является целым числом и больше 10.

Вывод программы выше выглядит следующим образом:

Вывод

Меньше 10