卫兵( Guards)
防护是我们可以用来增加模式匹配能力的结构。 使用警卫,我们可以对模式中的变量执行简单的测试和比较。
guard语句的一般语法如下 -
function(parameter) when condition ->
Where,
Function(parameter) - 这是保护条件中使用的函数声明。
Parameter - 通常保护条件基于参数。
Condition - 应该评估的条件,以查看是否应该执行该函数。
指定保护条件时,必须使用when语句。
让我们看一下如何使用防护装置的快速示例 -
例子 (Example)
-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的保护。这样,您可以多次定义相同的功能,每个功能都有一个单独的保护条件。
上述计划的输出如下 -
输出 (Output)
greater than 10
保护条件也可用于if else和case语句。 让我们看看我们如何对这些陈述进行守卫操作。
“if”声明的警卫
防护也可以用于if语句,以便执行的一系列语句基于保护条件。 让我们看看我们如何实现这一目标。
例子 (Example)
-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语句一起使用。 如果guard函数的计算结果为true,则显示语句“N大于10”。
如果保护功能评估为假,则显示语句“N小于10”。
上述计划的输出如下 -
输出 (Output)
N is less than 10
“案件”陈述的警卫
防护也可用于案例陈述,以便执行的一系列陈述基于保护条件。 让我们看看我们如何实现这一目标。
例子 (Example)
-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语句一起使用。 如果guard函数的计算结果为true,则显示“A的值大于10”的语句。
如果保护功能评估为其他任何内容,则显示“A的值小于10”的语句。
上述计划的输出如下 -
输出 (Output)
The value of A is less than 10
多重防护条件
还可以为功能指定多个保护条件。 具有多个保护条件的guard语句的一般语法如下 -
function(parameter) when condition1 , condition1 , .. conditionN ->
Where,
Function(parameter) - 这是使用保护条件的函数声明。
Parameter - 通常保护条件基于参数。
condition1, condition1, .. conditionN - 这些是应用于函数的多重保护条件。
指定保护条件时,必须使用when语句。
让我们看一下如何使用多个防护装置的快速示例 -
例子 (Example)
-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时,才会执行该函数。
上述计划的输出如下 -
输出 (Output)
Greater than 10