Erlang基础之模式匹配(2)
来源:互联网 发布:iphoto for mac 10.9 编辑:程序博客网 时间:2024/06/04 18:32
本节主要介绍元组与列表的模式匹配。
一、元组的模式匹配
元组的匹配对于左端有一定的要求,若能匹配成功,则需要:
1.左端必须和右端具有相同形式,应含有相同数量元素;
2.左端中的常量必须与右端对应位置的常量相等;
3.对于右端中不同位置的相同常量,在对应的左端中可以使用同一个变量进行成功的模式匹配;
4.“_”(下划线)是变量的通配符,可以匹配任何常量,同时并不发生绑定。一般用于在模式匹配时需要忽略掉或无需关心的值的匹配。
下图为在交互模式下的几个模式匹配的实例:
语句(1)中,经过模式匹配将一个元组的值绑定到Person变量上。
语句(2)中,应用模式匹配,将Name变量绑定为john,将Age变量绑定为23。从语句(3)、(4)可以得到印证。注意的是匹配时,原子也必须对应匹配,如果将person改为其它原子,则不能成功进行模式匹配。
语句(5)中,右端元组中第2、3两项的值相同,所以左端使用两次X变量,可以成功进行模式匹配。因为首次匹配时绑定为3,第二次匹配时,X虽然已绑定,但其值和匹配的常量恰好相等。
语句(7)中,右端元组中第2、3两项的值不同,所以左端使用相同变量匹配时,会发生错误,有错误提示信息。
语句(8)中,使用的两次“_”通配符,虽然其匹配的值不同(一次为name,另一次为age),但不发生绑定,所以可以成功匹配。
二、列表的模式匹配
在Erlang语言中,列表中的第一值称为Head,而将去除Head元素构成的列表称之为Tail,其常用的匹配形式为:
[H|T] = [1,2,3,4]
模式匹配的结果为:H的值为1,T的值为列表[2,3,4]。
在列表匹配时,也可使用多个变量进行模式匹配,从而一次绑定多个变量,比如:
上图中,一次绑定了X、Y、T三个变量。
此外,[A,A|Ta] = [1,1,2,3]也是可以成功匹配的。
- Erlang基础之模式匹配(2)
- Erlang基础之模式匹配(1)
- Erlang函数与模式匹配(2)
- Erlang的模式匹配
- Erlang函数与模式匹配
- Erlang基础之整数
- Erlang基础之原子
- Erlang中的模块与模式匹配
- erlang学习之基础语法
- Erlang基础之浮点数
- Erlang基础之布尔值
- scala基础-模式匹配
- erlang学习笔记之基础篇(二)
- .NET正则基础之——.NET正则匹配模式(转)
- .NET正则基础之——.NET正则匹配模式
- .NET正则基础之——.NET正则匹配模式
- .NET正则基础之——.NET正则匹配模式
- 正则基础之——.NET匹配模式
- GDB常用命令
- 深度探索C++对象模型之前言
- Oracle、SQL和DB2分页查询写法介绍
- 观察者模式:推模型与拉模型
- php中declare的作用详解
- Erlang基础之模式匹配(2)
- Java开发杨枝/10.1
- Tomcat安装与配置
- PHP实现Excel导入
- Nand Flash和Nor Flash的区别
- tensorflow笔记:流程,概念和简单代码注释
- SpringMVC DispatcherServlet执行流程及源码分析
- spoj D-Query(主席树)
- JAVA中的内存分配