使用 ETS Select 形成交叉点

发布于 2024-08-30 21:48:20 字数 553 浏览 8 评论 0原文

我有以下 ets 结构:

SomeTable = ets:new(sometable, [bag]).
ets:insert(SomeTable, [
                        {set1,item1},
                        {set1,item2},
                        {set1,item3},
                        {set2,item1},
                        {set2,item2},
                        {set2,item4}]).

我想使用 ets:select 和 fun2ms 获得 set1 和 set2 的交集,结果将是 [item1, item2]。

我花了几个小时试图用 ets:select 和 fun2ms 来完成它,但没有成功。 你能帮我使用 ets:select 和 fun2ms 吗?

感谢您的所有回答!

PS:我知道sets模块,但我必须使用ets和这个确切的数据结构。

i have the following ets structure:

SomeTable = ets:new(sometable, [bag]).
ets:insert(SomeTable, [
                        {set1,item1},
                        {set1,item2},
                        {set1,item3},
                        {set2,item1},
                        {set2,item2},
                        {set2,item4}]).

i want to get intersection of set1 and set2 using ets:select and fun2ms, result will be [item1, item2].

i spent hours and hours trying to accomplist it with ets:select and fun2ms with no success.
can you help me out using ets:select and fun2ms?

thanks for all answers!

ps: i know about sets module, but i have to use ets and this exact data structure.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

囍笑 2024-09-06 21:48:20
qlc:e(qlc:q([ I || {set1, I} <- ets:table(sometable), ets:match_object(sometable, {set2, I}) =/= []])).
qlc:e(qlc:q([ I || {set1, I} <- ets:table(sometable), ets:match_object(sometable, {set2, I}) =/= []])).
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文