了解dict:在erlang中获取的返回类型

时间:2018-10-17 10:03:40

标签: erlang

我使用两种不同的方式创建字典,然后得到结果,但是有两种不同的结果。
我想知道为什么。

使用 dict:append

Dict1 = dict:append(key, value, dict:new()).
dict:fetch(key, Dict1).
% I get a list with the value
[value] 

使用 dict:from_list

Dict2 = dict:from_list([{ key, value }]).
dict:fetch(key, Dict2).
% I get the value
value

为什么返回类型不同?
fetch doc

1 个答案:

答案 0 :(得分:6)

dict:append/3的文档说:

  

将新值添加到与键关联的当前值列表中。

它是用于dict的值始终为列表时使用的。您可以看到Dict1是从key[value]的字典,而Dict2是从keyvalue的字典:

> dict:to_list(Dict1).
[{key,[value]}]
> dict:to_list(Dict2).
[{key,value}]

如果您想按原样存储值而不是将其存储在列表中,则可以使用dict:store/3

> Dict3 = dict:store(key, value, dict:new()).
{dict,1,16,16,8,80,48,
      {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
      {{[],[],[],[],[],[],[],[],[],
        [[key|value]],
        [],[],[],[],[],[]}}}
> dict:fetch(key, Dict3).
value