ets查询接口match、select说明
ets:match/2
用法:
match(Tab, Pattern) -> [Match]
返回和模式Pattern匹配的对象。
一个匹配模式可能包含:绑定部分、'_'匹配任何Erlang项和匹配变量。
示例
1>ets:match(test, '$1'). %% 匹配Tab里所有变量
[{1,2,3,4}, {5,6,7,8}]
2>ets:match(test, {'_','_',3,'$1'}).
[[4]]
避免过多'_'通配符出现,可以使用记录record
示例
3>ets:match(test, #test{c=3,_='_',d='$1'}).
[[4]]
ps:如果要得到整个对象,可以使用ets:match_object/2。
ets:select/2
用法:
select(Tab, MatchSpec) -> [Match]
使用一个匹配描述match_spec匹配对象。该函数比ets:match/2和ets:match_object/2更常用,一个简单的格式如下:
MatchSpec = [MatchFunction]
MatchFunction = {MatchHead, [Guard], [Result]}
MatchHead = "Pattern as in ets:match"
Guard = {"Guardtest name", ...}
Result = "Term construct"
一个匹配描述含有一个以上元组列表,元组有三个元素,第一个元素和ets:match/2中的匹配模式一致,第二个元素是一个断言列表,可空,第三个元素是返回值描述。
返回值结构为MatchHead所绑定的匹配变量,或者特殊的匹配值'$_'(整个匹配对象)和'$$(包含所有匹配值)'。
示例
4>ets:select(test, [{#test{c=3,_='_',a='$2',d='$1'}, [], ['$_']}]).
[#test{a = 1,b = 2,c = 3,d = 4}]
5>ets:select(test, [{#test{c=3,_='_',a='$1',d='$2'}, [], ['$$']}]).
[[1,4]]
6>ets:select(test, [{#test{c=3,_='_',a='$1',d='$2'}, [], ['$2']}]).
[4]
如果需要表达复杂的匹配条件,就需要使用Match specifications
7> MS = ets:fun2ms(fun(#test{a=A, b=B}) when A > 1 -> B end).
[{#test{a = '$1',b = '$2',c = '_',d = '_'},
[{'>','$1',1}],
['$2']}]
8> ets:select(test, MS).
[6]
ets查询接口match、select说明的更多相关文章
- MyBatis基础入门《四》接口方式.Select查询集合
MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...
- 利用MyBatis的动态SQL特性抽象统一SQL查询接口
1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...
- CUBA 使用 Spring 查询接口
原文链接:https://www.cuba-platform.com/blog/spring-query-interfaces-in-cuba 翻译:CUBA China CUBA-Platform ...
- 三、Django学习之单表查询接口
查询接口 all() 查询所有结果,结果是queryset类型 filter(**kwargs) and条件关系:参数用逗号分割表示and关系 models.Student.objects.filte ...
- IP地址查询接口及调用方法
1.查询地址 搜狐IP地址查询接口(IP):http://pv.sohu.com/cityjson 1616 IP地址查询接口(IP+地址):http://w.1616.net/chaxun/ipto ...
- 基站查询接口,基站查询API
查询接口为商用,用于软件开发,非开发用户用不上.(说明:接口不能进行手机定位) 如需申请key,请联系QQ 2258172309. 1.移动联通基站查询接口 请求示例:http://www.cellm ...
- elasticsearch 查询(match和term)
elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL). 由于DSL查询更为直观也更为简 ...
- 【转】万网域名查询接口(API)的说明
1.域名查询接口采用HTTP,POST,GET协议:调用URL:http://panda.www.net.cn/cgi-bin/check.cgi参数名称:area_domain 值为标准域名,例:h ...
- 免费手机号码归属地API查询接口和PHP使用实例分享
免费手机号码归属地API查询接口和PHP使用实例分享 最近在做全国性的行业分类信息网站,需要用到手机号归属地显示功能,于是就穿梭于各大权威站点之间偷来了API的接口地址. 分享出来,大家可以用到就拿去 ...
随机推荐
- 第十章 Centos7-系统进程管理 随堂笔记
第十章 Centos7-系统进程管理 本节所讲内容: 10.1 进程概述和ps查看进程工具 10.2 uptime查看系统负载-top动态管理进程 10.3 前后台进程切换- nice进程优先级-实战 ...
- 高性能MySQL之基础架构
一.背景 为什么我们需要先学习MYSQL的基础架构先呢? 原因很简单,当我们需要了解一件事物的时候,我们只有站在宏观的层面,才能层层剥丝抽茧的去理解问题.举个例子,我们要看一个框架的源码,一开始就想进 ...
- java支付宝app支付-代码实现
1.我们需要在支付宝商户平台配置好,取到四个参数如下(这是支付宝官方配置地址):https://www.cnblogs.com/fuzongle/p/10217144.html 合作身份者ID:123 ...
- SpringBoot 2 HTTP转HTTPS
@Bean public TomcatServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat ...
- 自定义FutureTask实现
FutureTask FutureTask是Future的实现,用来异步任务的获取结果,可以启动和取消异步任务,查询异步任务是否计算结束以及获取最终的异步任务的结果.通过get()方法来获取异步任务的 ...
- RE最全面的正则表达式----字符验证
二.校验字符的表达式汉字:^[一-彪]{0,}$英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$长度为3-20的所有字符:^.{3,20}$由26个英文字母组成的字 ...
- 深入解析Mysql中事务的四大隔离级别及其所解决的读现象
本文详细介绍四种事务隔离级别,并通过举例的方式说明不同的级别能解决什么样的读现象.并且介绍了在关系型数据库中不同的隔离级别的实现原理. 在DBMS中,事务保证了一个操作序列可以全部都执行或者全部都不执 ...
- Spring boot实战项目整合阿里云RocketMQ (非开源版)消息队列实现发送普通消息,延时消息 --附代码
一.为什么选择RocketMQ消息队列? 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂欢节零点千万级 TPS.万亿 ...
- Go-cron定时任务
1.cron(计划任务) 按照约定的时间,定时的执行特定的任务(job). cron 表达式 表达了这种约定. cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示. 秒 分 时 日 月 ...
- MySQL MGR集群单主模式的自动搭建和自动化故障修复
随着MySQL MGR的版本的升级以及技术成熟,在把MHA拉下神坛之后, MGR越来越成为MySQL高可用的首选方案.MGR的搭建并不算很复杂,但是有一系列手工操作步骤,为了简便MGR的搭建和故障诊断 ...