gpt4 book ai didi

erlang - 合并 Mnesia 记录

转载 作者:行者123 更新时间:2023-12-02 08:17:48 24 4
gpt4 key购买 nike

我正在尝试重构一些用于收集调用队列中代理当前状态的软件代码。目前,对于我监听的大约 6 个事件中的每一个,我都会检查 Mnesia 表中是否存在代理,并根据事件更改行中的某些值,或者如果代理不存在,则将其添加为新值。目前我在每个事件中都有这个 Mnesia 事务,当然这是一堆用于检查代理是否存在等的重复代码。

我正在尝试更改它,以便有一个像 change_agent/2 这样的函数,我可以从为我处理此问题的事件中调用它。

我的问题当然是记录......我找不到动态创建它们或将其中两个合并在一起或任何东西的方法。最好有一个我可以调用的函数,例如:

change_agent("001", #agent(id = "001", name = "Steve")).
change_agent("001", #agent(id = "001", paused = 0, talking_to = "None")).

最佳答案

为记录编写通用访问函数很困难。解决此问题的一种方法是 'exprecs'图书馆,其中将生成低级记录访问函数的代码。

您需要做的是将以下几行添加到一个模块:

-compile({parse_transform, exprecs}).
-export_records([...]). % name the records that you want to 'export'

访问函数的命名约定可能看起来很奇怪,但其灵感来自于 Richard O'Keefe 的提议。它至少是一致的,并且不太可能与现有功能发生冲突。 (:

关于erlang - 合并 Mnesia 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com