orddict
orddict
模块
orddict
模块摘要
键值字典作为有序列表。
描述
这个模块提供了一个Key
- Value
字典。An orddict
是字典的表示形式,其中一对对列表用于存储键和值。该列表按照Erlang术语顺序中
的键排序
。
该模块提供与模块相同的界面,dict(3)
但具有定义的表示。一个不同之处在于,dict
如果两个键不匹配(如果它们不匹配(=:=
),则认为两个键不同,当且仅当它们不比较equal(==
)时,该模块将两个键视为不同。
数据类型
orddict(Key, Value) = [{Key, Value}]
由new/0
返回的字典。
orddict() =
orddict
(term(), term())
输出
附加(Key,Value,Orddict1) - > Orddict2
类型
将一个新值附加到与Key关联的当前值列表中。 如果与Key关联的初始值不是值列表,则会生成异常。
另见部分Notes
。
append_list(Key,ValList,Orddict1) - > Orddict2
类型
将值列表追加ValList
到与当前值相关的值列表中Key
。如果与之相关的初始值Key
不是值列表,则会生成异常。
另见部分Notes
。
erase(Key, Orddict1) -> Orddict2
类型
从字典中用指定的键擦除所有项。
fetch(Key, Orddict) -> Value
类型
返回键入字典Orddict的相关值。 此函数假定密钥存在于字典中。 如果密钥不在字典中,则会产生异常。
另见部分Notes
。
fetch_keys(Orddict) - > Keys
类型
返回字典中所有键的列表。
take(Key, Orddict) -> {Value, Orddict1} | error
类型
此函数返回字典和新字典中的值,但不包含此值。如果密钥不在字典中,则返回error
。
filter(Pred, Orddict1) -> Orddict2
类型
Orddict2是Orddict1中Pred(Key,Value)为真的所有键和值的字典。
find(Key, Orddict) -> {ok, Value} | error
类型
搜索字典中的密钥。 返回{ok,Value},其中Value是与Key关联的值,或者如果该关键字不存在于字典中,则返回错误。
另见部分Notes
。
fold(Fun, Acc0, Orddict) -> Acc1
类型
在Orddict的连续键和值连同额外参数Acc(累加器的缩写)一起调用Fun。 函数必须返回传递给下一个呼叫的新累加器。 如果列表为空,则返回Acc0。
from_list(List) -> Orddict
类型
将Key
- Value
列表List
转换为字典。
is_empty(Orddict) -> boolean()
类型
如果Ordict没有元素,则返回true,否则返回false。
is_key(Key, Orddict) -> boolean()
类型
测试密钥是否包含在词典Orddict中。
map(Fun, Orddict1) -> Orddict2
类型
在连续的键上调用Fun并且Orddict1 tvo的值为每个键返回一个新的值。
merge(Fun, Orddict1, Orddict2) -> Orddict3
类型
合并两个字典Orddict1和Orddict2,创建一个新字典。 来自两个词典的所有键值对都包含在新词典中。 如果在两个字典中都出现密钥,则使用密钥调用Fun,并使用这两个值返回新值。 合并/ 3可以定义如下,但更快:
merge(Fun, D1, D2) ->
fold(fun (K, V1, D) ->
update(K, fun (V2) -> Fun(K, V1, V2) end, V1, D)
end, D2, D1).
new() -> orddict()
创建一本新字典。
size(Orddict) -> integer() >= 0
类型
返回一个元素的数量Orddict
。
store(Key, Value, Orddict1) -> Orddict2
类型
存储Key
- Value
对在字典中。如果Key
已经存在Orddict1
,关联的值被替换为Value
。
to_list(Orddict) -> List
类型
将字典转换为列表表示形式。
update(Key, Fun, Orddict1) -> Orddict2
类型
通过调用Fun
该值来更新字典中的值以获取新值。如果Key
字典中不存在,则会生成异常。
update(Key, Fun, Initial, Orddict1) -> Orddict2
类型
通过调用Fun
该值来更新字典中的值以获取新值。如果Key
不存在于字典中,Initial
则存储为第一个值。例如,append/3
可以定义如下:
append(Key, Val, D) ->
update(Key, fun (Old) -> Old ++ [Val] end, [Val], D).
update_counter(Key, Increment, Orddict1) -> Orddict2
类型
将增量添加到与Key关联的值并存储此值。 如果密钥不在字典中,则增量将作为第一个值存储。
这可以定义如下,但速度更快:
update_counter(Key, Incr, D) ->
update(Key, fun (Old) -> Old + Incr end, Incr, D).
注记
功能append/3
和append_list/3
,以便将键控值存储在列表中。累加器
,例如:
> D0 = orddict:new(),
D1 = orddict:store(files, [], D0),
D2 = orddict:append(files, f1, D1),
D3 = orddict:append(files, f2, D2),
D4 = orddict:append(files, f3, D3),
orddict:fetch(files, D4).
[f1,f2,f3]
这样就省去了首先获取键控值、在存储值列表中追加新值和存储结果的麻烦。
功能fetch/2
如果该键已知在字典中,则为使用,否则为函数。find/2
...
另见
dict(3)
,gb_trees(3)