2012-12-19 66 views
0

我正在創建一個ets;在Erlang中,我可以使用ets:tab2list而不包含嵌套元組的換行符嗎?

ets:new(myets,[duplicate_bag,public,named_table]). 

我把數據的格式如下:

{120869,message,item1,item2,status1,success} 
{120869,message,item1,item2,status1,fail} 
{120869,action,message,{oldsetting,40},{newsetting,50}} 
{93195,model_status} 

我想每一種保存爲文本文件的不同行。我以下列方式嘗試這樣的:

Data = ets:tab2list(myets) 

這給:

[{120869,message,item1,item2,status1,success}, 
{120869,message,item1,item2,status1,fail}, 
{120869,action,message, 
{oldsetting,40}, 
{newsetting,50}}, 
{93195,model_status}] 

然後我用io:format保存到文件中。

但是,我不知道是否有一個簡單的方法來保存myets到一個文本文件,而無需將在第三元組換行符(開頭oldsettingnewsetting嵌套元組)?

回答

1

好了,一個簡單的打印功能應該做的伎倆:

print_list(List, File) -> 
    lists:foreach(fun(X) -> io:write(File, X), io:nl(File) end, List). 

但是,如果你只是想救你可以使用to_dets/2的ETS表(與from_dets/2打開它)。

1

如果您在文件文件設備,那麼就執行:

[io:format(File, "~p\n", [I]) || I <- Data]. 

但是,如果你想存儲真正的大桌,這樣一來是不是內存效率。

爲什麼要存儲這些數據?也許最好只使用dets?

相關問題