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说明的更多相关文章

  1. MyBatis基础入门《四》接口方式.Select查询集合

    MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...

  2. 利用MyBatis的动态SQL特性抽象统一SQL查询接口

    1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...

  3. CUBA 使用 Spring 查询接口

    原文链接:https://www.cuba-platform.com/blog/spring-query-interfaces-in-cuba 翻译:CUBA China CUBA-Platform ...

  4. 三、Django学习之单表查询接口

    查询接口 all() 查询所有结果,结果是queryset类型 filter(**kwargs) and条件关系:参数用逗号分割表示and关系 models.Student.objects.filte ...

  5. IP地址查询接口及调用方法

    1.查询地址 搜狐IP地址查询接口(IP):http://pv.sohu.com/cityjson 1616 IP地址查询接口(IP+地址):http://w.1616.net/chaxun/ipto ...

  6. 基站查询接口,基站查询API

    查询接口为商用,用于软件开发,非开发用户用不上.(说明:接口不能进行手机定位) 如需申请key,请联系QQ 2258172309. 1.移动联通基站查询接口 请求示例:http://www.cellm ...

  7. elasticsearch 查询(match和term)

    elasticsearch 查询(match和term) es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL). 由于DSL查询更为直观也更为简 ...

  8. 【转】万网域名查询接口(API)的说明

    1.域名查询接口采用HTTP,POST,GET协议:调用URL:http://panda.www.net.cn/cgi-bin/check.cgi参数名称:area_domain 值为标准域名,例:h ...

  9. 免费手机号码归属地API查询接口和PHP使用实例分享

    免费手机号码归属地API查询接口和PHP使用实例分享 最近在做全国性的行业分类信息网站,需要用到手机号归属地显示功能,于是就穿梭于各大权威站点之间偷来了API的接口地址. 分享出来,大家可以用到就拿去 ...

随机推荐

  1. 浅谈NodeJS多进程服务架构基本原理

    阅读目录 一:nodejs进程进化及多进程架构原理 二:node中child_process模块实现多进程 三:父子进程间如何通信? 四:理解cluster集群 回到顶部 一:nodejs进程进化及多 ...

  2. 初识代理——Proxy

    无处不在的模式——Proxy 最近在看<设计模式之禅>,看到代理模式这一章的时候,发现自己在写spring项目的时候其实很多时候都用到了代理,无论是依赖注入.AOP还是其他,可以说是无处不 ...

  3. Power Designer导出模型的sql加注释-Oracle语句

    第一步:Database-->Edit Current DBMS 第二步: 然后分别将 Script-->Objects-->Table-->TableComment Scri ...

  4. Redis——基础使用

    Redis总体介绍: Redis特性 Redis(REmote DIctionary Server),是一个开源的内存数据库 持久化:RDB.AOF 主备复制 丰富的数据结构 Lua脚本.事务 Red ...

  5. 汇总VSCode中比较好用的插件

    使用vscode编辑器两年的时间,总结出前端一些比较方便的插件 1. Auto Close Tag 自动添加HTML / XML关闭标签 2. Auto Complete Tag 自动完成标签 3 A ...

  6. [Spring cloud 一步步实现广告系统] 19. 监控Hystrix Dashboard

    在之前的18次文章中,我们实现了广告系统的广告投放,广告检索业务功能,中间使用到了 服务发现Eureka,服务调用Feign,网关路由Zuul以及错误熔断Hystrix等Spring Cloud组件. ...

  7. Java虚拟机详解(五)------JVM参数(持续更新)

    JVM参数有很多,其实我们直接使用默认的JVM参数,不去修改都可以满足大多数情况.但是如果你想在有限的硬件资源下,部署的系统达到最大的运行效率,那么进行相关的JVM参数设置是必不可少的.下面我们就来对 ...

  8. Flink 源码解析 —— Standalone Session Cluster 启动流程深度分析之 Job Manager 启动

    Job Manager 启动 https://t.zsxq.com/AurR3rN 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac ...

  9. linux细节操作的

    一>安装mysql 可以直接在linux系统下载 下载之前要安装wget插件 下载命令 wget 后面跟安装软件的url 比如mysql wget http://repo.mysql.com/m ...

  10. Linux配置部署_新手向(一)——CentOS系统安装

    目录 前言 VMware 开始安装 系统安装 小结 @ 前言 最近忙过一件人生大事之后,终于稍微有点时间鼓捣东西,之前net core相关的基础已经鼓捣的差不多了,既然net core跨平台,那就来体 ...