dict:erase/2
从字典里删除一个键
用法:
erase(Key, Dict1) -> Dict2
内部实现:
-spec erase(Key, Dict1) -> Dict2 when
Key :: term(),
Dict1 :: dict(),
Dict2 :: dict().
%% Erase all elements with key Key.
erase(Key, D0) ->
Slot = get_slot(D0, Key),
{D1,Dc} = on_bucket(fun (B0) -> erase_key(Key, B0) end,
D0, Slot),
maybe_contract(D1, Dc).
erase_key(Key, [?kv(Key,_Val)|Bkt]) -> {Bkt,1};
erase_key(Key, [E|Bkt0]) ->
{Bkt1,Dc} = erase_key(Key, Bkt0),
{[E|Bkt1],Dc};
erase_key(_, []) -> {[],0}.
删除字典里跟键 Key 相关联的所有项
D = dict:from_list([{k1, v1}, {k2, v2}, {k3, v3}]),
dict:to_list(dict:erase(k1, D)).