- Erlang教程
- Erlang - 主页
- Erlang - 概述
- Erlang - 环境
- Erlang - 基本语法
- Erlang-Shell
- Erlang - 数据类型
- Erlang - 变量
- Erlang - 运算符
- Erlang - 循环
- Erlang - 决策
- Erlang - 函数
- Erlang - 模块
- Erlang - 递归
- Erlang - 数字
- Erlang - 字符串
- Erlang - 列表
- Erlang - 文件 I/O
- Erlang - 原子
- Erlang - 地图
- Erlang - 元组
- Erlang - 记录
- Erlang - 异常
- Erlang - 宏
- Erlang - 头文件
- Erlang - 预处理器
- Erlang - 模式匹配
- Erlang - 守卫
- Erlang-BIFS
- Erlang - 二进制文件
- Erlang - 乐趣
- Erlang - 进程
- Erlang - 电子邮件
- Erlang - 数据库
- Erlang - 端口
- Erlang - 分布式编程
- Erlang-OTP
- Erlang - 并发
- Erlang - 性能
- Erlang - 驱动程序
- Erlang - 网络编程
- Erlang 有用资源
- Erlang - 快速指南
- Erlang - 有用的资源
- Erlang - 讨论
Erlang - 守卫
守卫是我们可以用来增强模式匹配能力的结构。使用守卫,我们可以对模式中的变量执行简单的测试和比较。
Guard 语句的一般语法如下 -
function(parameter) when condition ->
在哪里,
函数(参数) - 这是在保护条件中使用的函数声明。
参数- 一般来说,保护条件基于参数。
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 个。这样,您可以多次定义相同的函数,每次都有一个单独的防护条件。
上述程序的输出如下 -
输出
greater than 10
保护条件也可用于if else和case语句。让我们看看如何对这些语句进行保护操作。
'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.
关于上面的例子需要注意以下几点 -
Guard 函数与 if 语句一起使用。如果保护函数的计算结果为 true,则显示语句“N is Greater than 10”。
如果防护函数的计算结果为 false,则显示语句“N 小于 10”。
上述程序的输出如下 -
输出
N is less than 10
“案例”陈述的守卫
守卫也可用于 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.
关于上面的例子需要注意以下几点 -
Guard 函数与 case 语句一起使用。如果防护函数的计算结果为 true,则显示语句“A 的值大于 10”。
如果保护函数的计算结果为其他值,则显示语句“A 的值小于 10”。
上述程序的输出如下 -
输出
The value of A is less than 10
多重保护条件
还可以为一个函数指定多个保护条件。具有多个保护条件的保护语句的一般语法如下 -
function(parameter) when condition1 , condition1 , .. conditionN ->
在哪里,
函数(参数) - 这是使用保护条件的函数声明。
参数- 一般来说,保护条件基于参数。
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).
关于上面的例子需要注意以下几点 -
你会注意到,对于第一个显示函数声明,除了N>10的条件之外,还指定了is_integer的条件。因此,只有当N的值为整数且大于10时,该函数才会被执行。
上述程序的输出如下 -
输出
Greater than 10