erlang ETS可以和record进行无逢结合

本文通过实例介绍Erlang中ETS表与Record数据结构的使用方法,包括Record的定义、插入、查找、更新及删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

record作为erlang的一种数据结构(特殊的Tuple,类似数组),通常用于函数量传递.
我们也可以选择ETS内存表作为存放record,Ets非常适合大量临时数据存储,最重要
的是ETS可以和record进行无逢结合.

%%在Eshell下声明record users

1 1> rd(users, {uid,website="t.qq.com/lajabs",name,time=time()}).
2users

%%对ets建表,并创建以record元素uid作为索引键,以下的增删改查都将使用它

1 2> ets:new(users,[public,set,named_table,{keypos, #users.uid}]).
2users

[/erlang]
%%创建record,并对元素赋值

1 3> Users=#users{uid=101,name=lajabs}.
2 #users{uid = 101,website="t.qq.com/lajabs",name = lajabs,
3time = {16,48,32}}

%%将创建好的record存入ets

1 4> ets:insert(users,Users).
2true

%%创建第二个record

1 5> Users2=#users{uid=102,name=laja2}.
2 #users{uid = 102,website="t.qq.com/lajabs",name = laja2,
3time = {16,49,16}}

%%把record users也存入ets,这时users表中有2笔记录

1 6> ets:insert(users,Users2).
2true

%%尝试查询uid(索引键)为102的记录,成功返回record(之前定义的变量Users2),需要注意返回的是列表(带[])

1 7> ets:lookup(users,102).
2 [#users{uid = 102,website="t.qq.com/lajabs",name = laja2,
3time = {16,49,16}}]

%%对ets更新record,将元素name改为’hello’

1 8> ets:update_element(users,102,{#users.name, hello}).
2true

%%查看修改后的结果,发现已经更改成功

1 9> ets:lookup(users,102).
2 [#users{uid = 102,website="t.qq.com/lajabs",name = hello,
3time = {16,49,16}}]

%%删除uid(索引键)为102的记录

1 10> ets:delete(users,102).
2true

%%查看结果,已删除成功,返回的是空列表[]

1 11> ets:lookup(users,102).
2[]

%%查询记录中的某个元素值可以用以下方式

1 12> ets:lookup_element(users,101,#users.name).
2lajabs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值