2015-09-04 19 views
0

我想對錶的每個屬性在Mnesia表上進行操作。列表:mnesia上的map():table_info(table,attributes)

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

您不能在運行時按名稱引用記錄項目。這是創紀錄的缺點之一。

在運行系統中記錄只是第一個元素是記錄的名稱元組,所以

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

正如你所看到的,所有的命名信息丟失。

但是,你的所有功能看起來有點無用。如果你想獲得所有的值,你可以使用記錄本身。