列表:mnesia上的map():table_info(表,属性)

时间:2015-09-04 03:00:42

标签: list erlang records mnesia

我想在表的每个属性上对Mnesia表进行操作。

Record = #table{attr1, attr2, attr3, attr4},

mnesia:table_info(Table, attributes)给出了一个原子属性列表,即[attr1, attr2, attr3, attr4]

lists:map(fun(X) -> Record#table.X end, mnesia:table_info(Table, attributes))

我期待上面的函数给出值列表。 但是,我收到了错误

"  * 1: syntax error before: X  "

我已经使用shell命令定义了表结构 -rd(table, {})并且还使用-rr(module)来读取记录结构

上面的代码有什么问题? 任何,替代使用列表模块处理表属性??

1 个答案:

答案 0 :(得分:1)

您无法在运行时按名称引用记录项。这是一个记录缺点。

在运行时记录中只是元组,第一个元素是记录的名称,所以

#table{attr1 = 1, attr2 = 2, attr3 = 3, attr4 = 4} =:= {table, 1, 2, 3, 4}

如您所见,所有命名信息都将丢失。

但是你的所有功能看起来都没用。如果要获取所有值,可以使用记录本身。