erlang 有好几种常用的判断结构语句,如 if、case、guard 等。文章将分别对if / case /guard的特点做介绍,以及用例说明
1、if 结构
if
Condition 1 ->
Action 1;
Condition 2 ->
Action 2;
Condition 3 ->
Action 3;
Condition 4 ->
Action 4
end
Erlang是这样工作的:先对Condition 1求值,如值为true,那么将执行Action 1,并跳出该结构。若Condition 1不成功,那么就继续对Condition 2求职,以此类推,直到有条件成功。在if结构中,知道要有一个结果为true,否则Erlang就会抛出一个异常。通常if语句的最后一个条件会是原子true,表示如果没有匹配的条件的话,应该做什么动作。
2、 case 结构
case Condition of
Result 1 ->
Action 1;
Result 2 ->
Action 2;
Result 3 ->
Action 3
end
Erlang是这样工作的:首先,对Condition进行求值,然后将结果依次对Result 1、Result 2等进行匹配,直到找到可以匹配的分支。我们可以把变量_放到最下面的条件层,用来处理没有匹配条件要执行的动作。
3、guard 结构
max(X, Y) when X > Y -> X;
max(X, Y) -> Y.
守卫(guard)是一种用于强化模式匹配功能的结构。如果点第一个子句不匹配,那么erlang会尝试匹配第二个子句。通常把没有任何限定条件的函数放最下面,用来处理没有匹配条件要执行的动作。
下面简单写了一个例子来说明:
-module(compare).
-export([compare/2, compare2/2, compare3/2]).
%% if 语句
compare(A, B) ->
if A > B ->
io:format("~p > ~p~n", [A, B]);
A < B ->
io:format("~p < ~p~n", [A, B]);
true ->
io:format("~p = ~p~n", [A, B])
end.
%% guard 语句
compare2(A, B) when A > B ->
io:format("~p > ~p~n", [A, B]);
compare2(A, B) when A < B ->
io:format("~p < ~p~n", [A, B]);
compare2(A, B) ->
io:format("~p = ~p~n", [A, B]).
%% case 语句
compare3(A, B) ->
case A > B of
true ->
io:format("~p > ~p~n", [A, B]);
_ ->
case A < B of
true ->
io:format("~p < ~p~n", [A, B]);
_ ->
io:format("~p = ~p~n", [A, B])
end
end.
分享到:
相关推荐
在Erlang的版本管理中,`kerl`是一个方便的工具,用于构建、安装和管理Erlang/OTP(Open Telecom Platform)的源代码版本。标签"erlang"表明讨论的核心是Erlang语言本身。文件名"otp_src_25.1"代表了OTP的源代码包,...
error: /tmp/esl-erlang_26.0.2-1~alinux~3_x86_64.rpm : not an rpm package (or packape manifest): arning: /tmp/rabbitmg-erver 3.12.4-1 all.rpm: Header V4 RSA/SHA512 Signature, key ID 6026dfca: NOKEY ...
mtproto_proxy:高性能https://t.mesocksy_bot的Erlang MTProto代理
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-...
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v$(curl -s https://www.rabbitmq.com/erlang-releases.html | grep -oP 'Erlang/OTP [^<]*' | head -n 1)/erlang-$(curl -s ...
官网下载实在是困难,我把当前Erlang / OTP 21.0 版本提交到这里提供给大家和自己下载 原先积分0的现在都这么高了,为了方便大家,放出云盘地址:https://pan.百度.com/s/1hb8vPiMslXxNuJC8PvnKgg提取码wmx8
RabbitMQ基于Erlang编程语言,因此在安装RabbitMQ之前,我们需要先安装Erlang环境。本文将涵盖以下几个关键知识点: 1. **Erlang安装**: Erlang是RabbitMQ的基础,因为RabbitMQ是用Erlang编写的。首先,我们需要...
erlang-script.rpm 安装mq前的依赖 来源:https://packagecloud.io/rabbitmq/erlang/install#bash-rpm
wget http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x86_64.rpm # 安装 Erlang rpm -ivh erlang-18.1-1.el6.x86_64.rpm ``` 如果安装过程中遇到依赖问题,需要先解决这些依赖。例如安装 `gcc` 和 `...
erlang文献及资料汇总 入门资料: erlang中文手册(R11B 文档译文,最适合入门) erlang位运算与二进制解析 erlang二进制高效编程 erlang异常处理详解 开发经验: 面对软件错误构建可靠的分布式系统 编写分布式的 ...
Erlang/OTP 26.2.1,Erlang,OTP,26.2.1
在Erlang中,DETs是用于在内存和磁盘之间存储和检索Erlang术语的数据结构。它们允许开发者快速访问数据,同时提供数据持久性,即在程序重启后仍能保留数据。DETs通常被用作轻量级数据库或缓存系统,特别是在需要高...
由于官网下载速度慢,提供一个最新版消息队列服务器下载 安装方式1、先装erlang.exe(路径因为不要有空格)装好之后配置环境变量path 指向erlang的bin 2、安装rabbitmq然后打开cmd安装插件RabbitMQ-Plugins(网页管理...
wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo ``` 再次执行: ``` yum install erlang ``` 安装 59 个包。 RabbitMQ 安装 安装 RabbitMQ: ```...
8. **熟悉Erlang语言**:为了更好地利用这个语法包,你需要了解Erlang的基础语法,包括函数定义、模块结构、模式匹配等概念。 9. **提升编辑体验**:除了语法高亮,EditPlus还支持代码折叠、自动完成等功能,通过...
RabbitMQ的核心实现是用Erlang编程语言编写的,这得益于Erlang的并发特性、分布式能力和容错性,使得RabbitMQ能够处理大量并发连接并保证高可用性。 Erlang是一种静态类型、函数式编程语言,由爱立信在20世纪80年代...
otp_win64_22.2.exe rabbitmq-server-3.8.2.exe windows64位下 欢迎下载 官网地址: ...Erlang:https://www.erlang.org/downloads RabbitMQ:https://www.rabbitmq.com/install-windows.html
OpenEmbedded / Yocto Project层,用于Erlang和Elixir支持 此层提供对与和/或构建系统一起使用的和支持: 文献资料 请参阅。 依存关系 该层取决于: URI:git://git.openembedded.org/bitbake分支:主 URI:git:...
erlang otp25 win安装包
VMware安装包和密匙 也可以从百度云下载:https://pan.baidu.com/s/1wibDu_rrN7_ByU9_-sQSLQ 提取码:mgod