Erlang的模式匹配
来源:互联网 发布:和谐网络用语 编辑:程序博客网 时间:2024/05/22 04:36
1. 模式匹配: Pattern = Expression
模式(Pattern):由绑定或未绑定的变量,以及字符量(如基元atom,整数,或字符串)组成。
表达式(Expression):包括数据结构,绑定的变量,数学运算和函数调用。Expression不能包含未绑定的变量。
2. 模式匹配的结果有两种:
匹配成功:未绑定变量编程绑定变量。
匹配失败:没有绑定值。
3. 模式匹配过程:
先计算Expression的值,然后与Pattern比较:
(1). 先比较Pattern和Expression的形式。如三个元素的元组只能匹配有三个元素的元组,[H|T] 只能匹配非空列表。
(2). Pattern中的常量必须和Expression中对应位置上的值相等。
(3). 如果模式匹配成功,会把未绑定的变量绑定到相应的表达式的值上。
(4). 绑定变量的值,必须和Expression相应位置上的值相等。
4. 模式匹配的用途:
A. 变量赋值
B. 控制程序的执行流程
C. 从复合数据类型中取值
5. 模式匹配demo:
(1). 提取列表 [1] 的头部和尾部: [Head|Tail] = [1] 必须使用未绑定的变量
(2). [Element,Element,_ ] = [1,1,2] 使用通配符_ 匹配任何东西,并且不产生任何绑定。
[Element,_Arg] = [1,2] 变量可以使用下划线开始,表示无关紧要的变量。用于不使用的变量。
(3).[A,B,C,D] = [1,2,3] 匹配失败,因为Pattern和Expression的列表元素个数不同。
[A,B,C|D]=[1,2,3] 匹配成功,D将绑定到空列表[].
[H|T] = [] 匹配失败,因为[H|T]意味着列表至少有一个元素。
(4). {A,_int,[B,_int],{B}} = {abc,22,[23,22],{23}} 模式匹配失败,因为_int 先绑定到整数22,然后一个包含整数22的列表与_int比较。
参考资料:《Erlang程序设计》
- Erlang的模式匹配
- Erlang函数与模式匹配
- Erlang中的模块与模式匹配
- Erlang基础之模式匹配(1)
- Erlang基础之模式匹配(2)
- Erlang函数与模式匹配(2)
- erlang的正则匹配和文本解析
- Erlang:条件判断3种方法,函数参数模式匹配、case模式匹配、if
- erlang element 与匹配
- erlang fun 函数匹配
- 实例分析Erlang二进制(Binary)匹配的内部机制
- 实例分析Erlang二进制(Binary)的匹配优化
- Erlang行为模式实现模块的首部
- 串的模式匹配
- 字符串的模式匹配
- 串的模式匹配
- 串的模式匹配
- 字符串的模式匹配
- 在路上...
- 约瑟夫环学习小记
- 混合高斯模型mixture Gaussians和EM算法
- android Snapshot
- Linux操作系统下如何制作Image映像文件
- Erlang的模式匹配
- CALayer小记1
- struts配置文件l中使用include 标签 引入另外一个在jar中的struts文件
- 线性回归,logistic回归和一般回归
- MongoDB搭建和简单操作(windows环境)
- 全国青少年信息学奥林匹克竞赛培训---选择排序
- ASP中〈%# 〉与〈%=〉的区别
- AOP在Spring中的配置
- 关于UIWebView的一些事