Учебники

Эрланг — Страж

Охранники — это конструкции, которые мы можем использовать для увеличения силы сопоставления с образцом. Используя охранники, мы можем выполнять простые тесты и сравнения переменных в шаблоне.

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

function(parameter) when condition ->

Куда,

  • Функция (параметр) — это объявление функции, которое используется в условии защиты.

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

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

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

Функция (параметр) — это объявление функции, которое используется в условии защиты.

Параметр — Обычно условие защиты основывается на параметре.

Условие — условие, которое должно быть оценено, чтобы увидеть, должна ли функция выполняться или нет.

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

Давайте посмотрим на быстрый пример того, как можно использовать охрану —

пример

Live Demo

-module(helloworld). 
-export([display/1,start/0]). 

display(N) when N > 10 ->   
   io:fwrite("greater then 10"); 
display(N) when N < 10 -> io:fwrite("Less 
   than 10"). 

start() -> 
   display(11).

Следующие вещи должны быть отмечены о приведенном выше примере —

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

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

Функция отображения определяется вместе с защитой. Первое объявление отображения имеет защиту, когда параметр N больше 10. Поэтому, если параметр больше 10, эта функция будет вызвана.

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

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

Выход

greater than 10

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

Охранники для утверждений «если»

Защитные элементы также можно использовать для операторов if, так что последовательность выполняемых операторов основана на условии защиты. Посмотрим, как нам этого добиться.

пример

Live Demo

-module(helloworld). 
-export([start/0]). 

start() -> 
   N = 9, 
   if 
      N > 10 -> 
         io:fwrite("N is greater than 10"); 
      true -> 
         io:fwrite("N is less than 10") 
   end.

Следующие вещи должны быть отмечены о приведенном выше примере —

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

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

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

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

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

Выход

N is less than 10

Охранники для «case» заявлений

Защитные ограждения также могут использоваться для выписок по делу, поэтому последовательность выполняемых заявлений основана на условии охраны. Посмотрим, как нам этого добиться.

пример

Live Demo

-module(helloworld). 
-export([start/0]). 

start() -> 
   A = 9, 
   case A of {A} when A>10 -> 
      io:fwrite("The value of A is greater than 10"); _ -> 
      io:fwrite("The value of A is less than 10") 
   end.

Следующие вещи должны быть отмечены о приведенном выше примере —

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

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

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

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

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

Выход

The value of A is less than 10

Несколько условий охраны

Для функции также могут быть указаны несколько условий защиты. Общий синтаксис защитного оператора с несколькими защитными условиями приведен ниже —

function(parameter) when condition1 , condition1 , .. conditionN ->

Куда,

  • Функция (параметр) — это объявление функции, которое использовало условие защиты.

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

  • условие1, условие1, .. условиеN — это несколько защитных условий, которые применяются к функциям.

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

Функция (параметр) — это объявление функции, которое использовало условие защиты.

Параметр — Обычно условие защиты основывается на параметре.

условие1, условие1, .. условиеN — это несколько защитных условий, которые применяются к функциям.

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

Давайте посмотрим на быстрый пример того, как можно использовать несколько охранников —

пример

Live Demo

-module(helloworld). 
-export([display/1,start/0]). 

display(N) when N > 10 , is_integer(N) -> 
   io:fwrite("greater then 10"); 
display(N) when N < 10 -> 
   io:fwrite("Less than 10"). 
   
start() -> 
   display(11).

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

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

Вы заметите, что для первого объявления функции отображения, в дополнение к условию для N> 10, также указано условие для is_integer . Таким образом, только если значение N является целым числом и больше 10, эта функция будет выполняться.

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