Erlang的模式匹配

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程序设计》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值