为什么orddict:fetch/2疯了?

nmi*_*els 5 erlang

在Erlang shell:

> orddict:fetch(b, [{d, 2}, {a, 1}, {b,5}, {c,9}]).
** exception error: no function clause matching 
                    orddict:fetch(b,[{d,2},{a,1},{b,5},{c,9}])
Run Code Online (Sandbox Code Playgroud)

> orddict:fetch(b, [{a, 1}, {b,5}, {c,9}]).
5
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

参考文献:orddict:fetch/2

orddict文档将orddict描述为orddict() = [{Key :: term(), Value :: term()}].

nmi*_*els 16

解决此问题的关键在于文档:

列表按键后排序.

使用orddict:from_list/1从常规的{key, value}对列表转换.

> orddict:fetch(b, orddict:from_list([{d, 2}, {a, 1}, {b,5}, {c,9}])).
5
Run Code Online (Sandbox Code Playgroud)

  • 太真实了,因此得名. (5认同)