2011-11-21 16 views
5

En el shell de Erlang:¿Por qué orddict: fetch/2 está loco?

> 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}]) 

pero

> orddict:fetch(b, [{a, 1}, {b,5}, {c,9}]). 
5 

Qué me estoy perdiendo aquí?

Referencias: orddict:fetch/2

The orddict docs describen un orddict como orddict() = [{Key :: term(), Value :: term()}].

+0

@downvoter: Atención para comentar? – nmichaels

Respuesta

16

La clave para la solución a este problema está en the docs:

La lista está ordenada después de las llaves.

Usa orddict:from_list/1 para convertir de una lista normal de {key, value} pares.

> orddict:fetch(b, orddict:from_list([{d, 2}, {a, 1}, {b,5}, {c,9}])). 
5 
+5

Demasiado cierto, de ahí el nombre. – rvirding

Cuestiones relacionadas