English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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, чтобы执行的 набор инструкций основывался на условиях защиты. Давайте посмотрим, как это можно сделать.
-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, чтобы执行的 набор инструкций основывался на условиях защиты. Давайте посмотрим, как это можно сделать.
-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