erlang判断语法结构:if/case/guard
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判断语法结构:if/case/guard的更多相关文章
- Shell case语法结构解析
case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 ...
- Java初认识--Java中的语法结构
Java中的语法结构(程序流程控制) Java的语法结构有四种: 1.顺序结构. 顺序结构很简单,就是按顺序执行,输出就可以了. 2.判断结构. 判断结构的一个代表性的语句是if:if语句有三种格式体 ...
- js学习:基本语法结构
语句 JavaScript 程序的执行单位为行(line),也就是一行一行地执行.一般情况下,每一行就是一个语句. 语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句. ...
- CSS_简介/语法结构/长度单位/应用方式/标签的样式重置/表单样式重置
一.CSS简介: w3c(World Wide Web Consortium):万维网联盟,是规定网页标准的一个组织(叫做Web标准) Web标准:是由w3c和其他标准化组织制定的一系列标准的集合, ...
- Oracle数据库 中的基础的一些语法结构
方括号里的内容为可选项 大括号是必填 1PL/SQL结构块 DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQ ...
- 转 关于shell中if 语法结构的广泛误解
转自 ttp://blog.csdn.net/security134/article/details/6742156 最近学习SHELL编程 这篇文章很好很重要.有些东西不能想当然.同时不是表面看起来 ...
- Linux Shell编程 条件判断语法
if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...
- oracle学习笔记(十五) PL/SQL语法结构以及使用
PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言. PL/SQL 是对 SQL 的扩展. 支持多种数据类型,如大对象和 ...
- for双重循环中的结构分离(语法结构问题)
//增加搜索列表 function addSearchList(){ $.get("/mall/h5_get_search_list.html","",func ...
随机推荐
- 如何签名apk,并让baidu地图正常显示
1.选中项目,右击export Next直到完成,这样就生成了my.keystore文件 将my.keystore拷到C:\Users\Administrator\.android 利用jdk的工具生 ...
- 深入浅出话XAML-学习笔记
第一章 XAML是什么? 1.1XAML之前 *设计师的设计更不上程序逻辑的变化 *程序员未能完全实现设计师提供的效果图 *效果图与程序功能不能完全匹配 *从效果图到软件UI的转化耗费很多时间 1.2 ...
- easy ui window 相关属性
<div class="easyui-window" title="提示" style="width:550px;height:500px;pa ...
- ASIHTTPRequest的使用(转)
转载自:http://fushengfei.iteye.com/blog/1147112 博客分类: IOS 原文地址:http://wiki.magiche.net/pages/viewpage ...
- ExtJS4.2学习(二)Ext统一组件模型——Panel
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-06/171.html --------------- ...
- SQL 去除重复、获取最新记录
应用中常会有需要去除重复的记录,或者获取某些最新记录(如:每个用户可以答题多次,每次答题时间不同,现在要获取所有用户的最新答题记录,即每个用户取最新的一条) 使用group 和max 即可实现上述功能 ...
- 团体程序设计天梯赛-练习集L2-007. 家庭房产
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
- Ehcache详细解读(转载)
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单.结构清晰.功能强大,最初知道它,是从Hibernate的缓存开始的.网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面 ...
- hdu 3449
有依赖的背包,转化成01背包来做: #include<iostream> #include<cstdio> #include<cstring> #include&l ...
- hdu 1087
动规 d[i]记录以第 i 个数结尾的最大值 #include <cstdio> #include <algorithm> #include <cstring> ...