- 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 - 保卫(Guards)
- Erlang - BIFS (Built-in Functions)
- Erlang - 二进制
- Erlang - Fun (匿名函数)
- Erlang - 进程
- Erlang - 邮件
- Erlang - 数据库
- Erlang - 端口
- Erlang - 分布式编程
- Erlang - OTP (Open Telecom Platform)
- Erlang - 并发
- Erlang - 性能
- Erlang - 驱动程序
- Erlang - Web编程
- Erlang 有用资源
- Erlang - 快速指南
- Erlang - 有用资源
- Erlang - 讨论
Erlang - 保卫(Guards)
保卫(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).
关于以上示例,需要注意以下几点:
display 函数是与保卫一起定义的。第一个 display 声明的保卫条件是参数 N 大于 10。因此,如果参数大于 10,则将调用该函数。
display 函数再次定义,但这次的保卫条件是小于 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.
关于以上示例,需要注意以下几点:
保卫函数与 if 语句一起使用。如果保卫函数计算结果为真,则显示语句“N 大于 10”。
如果保卫函数计算结果为假,则显示语句“N 小于 10”。
上述程序的输出如下:
输出
N is less than 10
‘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.
关于以上示例,需要注意以下几点:
保卫函数与 case 语句一起使用。如果保卫函数计算结果为真,则显示语句“A 的值大于 10”。
如果保卫函数计算结果为其他任何值,则显示语句“A 的值小于 10”。
上述程序的输出如下:
输出
The value of A is less than 10
多个保卫条件
也可以为一个函数指定多个保卫条件。带有多个保卫条件的保卫语句的通用语法如下:
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).
关于以上示例,需要注意以下几点:
您会注意到,对于第一个 display 函数声明,除了 N>10 的条件外,还指定了 **is_integer** 条件。因此,只有当 N 的值是整数且大于 10 时,才会执行此函数。
上述程序的输出如下:
输出
Greater than 10