我想在表的每个属性上对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)
来读取记录结构
上面的代码有什么问题? 任何,替代使用列表模块处理表属性??
答案 0 :(得分:1)
您无法在运行时按名称引用记录项。这是一个记录缺点。
在运行时记录中只是元组,第一个元素是记录的名称,所以
#table{attr1 = 1, attr2 = 2, attr3 = 3, attr4 = 4} =:= {table, 1, 2, 3, 4}
如您所见,所有命名信息都将丢失。
但是你的所有功能看起来都没用。如果要获取所有值,可以使用记录本身。