Guards - это конструкции, которые мы можем использовать для увеличения мощности согласования шаблонов. Используя охранники, мы можем выполнять простые тесты и сравнения переменных в шаблоне.
Общий синтаксис инструкции охраны выглядит следующим образом:
function(parameter) when condition ->
- function (parameter) - это объявление функции, которое используется в состоянии охраны.
- parameter. Обычно условие защиты основано на параметре.
- condition- Условие, которое должно быть оценено, чтобы проверить, должна ли выполняться функция или нет.
- Оператор when должен использоваться, когда задано условие охраны.
Давайте посмотрим на быстрый пример того, как можно использовать охранники:
-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. Таким образом, вы можете определить одну и ту же функцию несколько раз, каждая с отдельным защитным условием.
Guards для заявлений «IF»
Гвардейцы также могут использоваться для операторов if, чтобы выполняемая серия операторов основывалась на состоянии защиты. Давайте посмотрим, как мы можем это достичь.
-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.
Guards для заявлений «case»
Гвардейцы также могут использоваться для операторов case, чтобы последовательность выполняемых операторов основывалась на состоянии охраны. Давайте посмотрим, как мы можем это достичь.
-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.
Несколько условий Guards
Для функции может быть задано несколько условий защиты. Общий синтаксис инструкции охраны с несколькими режимами защиты приведен ниже:
function(parameter) when condition1 , condition1 , .. conditionN ->
- function (parameter) - это объявление функции, которое использовало условие защиты.
- parameter. Обычно условие защиты основано на параметре.
- condition1, condition1, .. conditionN - Это условия множественной защиты, которые применяются к функциям.
- Оператор when должен использоваться, когда задано условие охраны.
Давайте рассмотрим быстрый пример того, как можно использовать несколько охранников -
-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).
0 комментариев