> Erlang中文手册 > find/2 在字典里查找值

dict:find/2

在字典里查找值

用法:

find(Key, Dict) -> {ok, Value} | error

内部实现:

-spec find(Key, Dict) -> {'ok', Value} | 'error' when
      Key :: term(),
      Dict :: dict(),
      Value :: term().

find(Key, D) ->
    Slot = get_slot(D, Key),
    Bkt = get_bucket(D, Slot),
    find_val(Key, Bkt).

find_val(K, [?kv(K,Val)|_]) -> {ok,Val};
find_val(K, [_|Bkt]) -> find_val(K, Bkt);
find_val(_, []) -> error.

跟 dict:fetch/2 一样,都是查找返回一个在字典 Dict 里跟键 Key 相关联的值,不过返回的格式不一样

D = dict:from_list([{k1, v1}, {k2, v2}, {k3, v3}]),
dict:find(k1, D).

而且字典里没有相关联的键值存在不会抛异常错误,只返回一个原子 error

D = dict:from_list([{k1, v1}, {k2, v2}, {k3, v3}]),
dict:find(k4, D).