在Erlang的字典中存储字典

时间:2010-12-02 22:15:03

标签: dictionary erlang

我有一个字典,用于存储使用参数名称的另一个字典。

我出现了右侧不匹配错误。

这是我的代码

handle_cast({setState, Id}, State) ->
Id0 = dict:new(), 
DQueue = queue:new(),
UQueue = queue:new(),
Id1 = dict:store(dQueue, [DQueue], Id0),
Id2 = dict:store(uQueue, [UQueue], Id1),
Id3 = dict:store(dSpeed, [], Id2),
Id4 = dict:store(uSpeed, [], Id3),
D = dict:store(Id, [Id4], State),
State = D,
{noreply, State};

我不确定错误的来源。我认为这可能是因为我将Id作为主词典中的键存储,并将新的内部词典作为值。

我需要内部字典的名称作为Id的值,因为它们将有很多,我需要稍后通过Id访问它们。

我是否正确设置了字典? erlang是否允许字典保存字典?

由于

2 个答案:

答案 0 :(得分:5)

在没有尝试代码的情况下,我认为在State = D进行State已经绑定在函数头部时,你会发生错误。除此之外,USpeedDSpeed应该是未定义的,除非您复制/粘贴了错误的函数。

答案 1 :(得分:3)

重写怎么样:

handle_cast({setState, Id}, State) ->
   D = dict:from_list([{dQueue, [queue:new()]},
                       {uQueue, [queue:new()]},
                       {dSpeed, []},
                       {uSpeed, []}],
   {noreply, D};

哪个更容易阅读,避免命名麻烦并且速度大致相同。