Erlang和运行时记录限制

dee*_*lue 9 erlang runtime

我正在开发一个Erlang系统并且重复出现的问题是记录是编译时预处理器宏(差不多),并且它们无法在运行时进行操作...基本上,我正在使用属性模式,其中属性在运行时添加到前端(AS3)上的对象.理想情况下,我会在Erlang方面用一个列表来反映这一点,因为它是一个基本的数据类型,但是在QCL [查询ETS表]中使用记录是不可能的,因为使用它们我必须具体说出哪个记录​​属性我想查询...我在larges表中至少有15列,所以在一个巨大的switch语句中列出它们(案例X)只是简单的丑陋.

有没有人有任何想法如何优雅地解决这个问题?也许一些内置函数用于创建具有适当签名的元组以用于模式匹配(用于QLC)?

谢谢

max*_*max 0

我不确定我完全理解你的问题,但在大多数情况下我已经从记录转移到道具列表。它们更加灵活,但速度也慢得多。使用 (d)ets 我通常使用一些记录字段进行粗略选择,然后检查其余记录上的 proplist 进行详细选择。