我有一个字典,用于存储使用参数名称的另一个字典。
我出现了右侧不匹配错误。
这是我的代码
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是否允许字典保存字典?
由于
答案 0 :(得分:5)
在没有尝试代码的情况下,我认为在State = D
进行State
已经绑定在函数头部时,你会发生错误。除此之外,USpeed
和DSpeed
应该是未定义的,除非您复制/粘贴了错误的函数。
答案 1 :(得分:3)
重写怎么样:
handle_cast({setState, Id}, State) ->
D = dict:from_list([{dQueue, [queue:new()]},
{uQueue, [queue:new()]},
{dSpeed, []},
{uSpeed, []}],
{noreply, D};
哪个更容易阅读,避免命名麻烦并且速度大致相同。