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的接口地址. 分享出来,大家可以用到就拿去 ...
随机推荐
- 浅谈NodeJS多进程服务架构基本原理
阅读目录 一:nodejs进程进化及多进程架构原理 二:node中child_process模块实现多进程 三:父子进程间如何通信? 四:理解cluster集群 回到顶部 一:nodejs进程进化及多 ...
- 初识代理——Proxy
无处不在的模式——Proxy 最近在看<设计模式之禅>,看到代理模式这一章的时候,发现自己在写spring项目的时候其实很多时候都用到了代理,无论是依赖注入.AOP还是其他,可以说是无处不 ...
- Power Designer导出模型的sql加注释-Oracle语句
第一步:Database-->Edit Current DBMS 第二步: 然后分别将 Script-->Objects-->Table-->TableComment Scri ...
- Redis——基础使用
Redis总体介绍: Redis特性 Redis(REmote DIctionary Server),是一个开源的内存数据库 持久化:RDB.AOF 主备复制 丰富的数据结构 Lua脚本.事务 Red ...
- 汇总VSCode中比较好用的插件
使用vscode编辑器两年的时间,总结出前端一些比较方便的插件 1. Auto Close Tag 自动添加HTML / XML关闭标签 2. Auto Complete Tag 自动完成标签 3 A ...
- [Spring cloud 一步步实现广告系统] 19. 监控Hystrix Dashboard
在之前的18次文章中,我们实现了广告系统的广告投放,广告检索业务功能,中间使用到了 服务发现Eureka,服务调用Feign,网关路由Zuul以及错误熔断Hystrix等Spring Cloud组件. ...
- Java虚拟机详解(五)------JVM参数(持续更新)
JVM参数有很多,其实我们直接使用默认的JVM参数,不去修改都可以满足大多数情况.但是如果你想在有限的硬件资源下,部署的系统达到最大的运行效率,那么进行相关的JVM参数设置是必不可少的.下面我们就来对 ...
- Flink 源码解析 —— Standalone Session Cluster 启动流程深度分析之 Job Manager 启动
Job Manager 启动 https://t.zsxq.com/AurR3rN 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac ...
- linux细节操作的
一>安装mysql 可以直接在linux系统下载 下载之前要安装wget插件 下载命令 wget 后面跟安装软件的url 比如mysql wget http://repo.mysql.com/m ...
- Linux配置部署_新手向(一)——CentOS系统安装
目录 前言 VMware 开始安装 系统安装 小结 @ 前言 最近忙过一件人生大事之后,终于稍微有点时间鼓捣东西,之前net core相关的基础已经鼓捣的差不多了,既然net core跨平台,那就来体 ...