[erlang-questions] How to match on a nested record against a dict

Igor Ribeiro Sucupira <>
Thu Nov 26 01:09:28 CET 2009


If you don't need the values that you store in the dict (in your
example, you store [] and never use it), you can use a sets instead of
a dict. Usage is a little bit simpler:

-------------------------
1> D = dict:store("_see._tcp.local", [], dict:new()).
{dict,1,16,16,8,80,48,
      {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
      {{[],[],[],[],
        [["_see._tcp.local"]],
        [],[],[],[],[],[],[],[],[],[],[]}}}
2> dict:find("_see._tcp.local", D).
{ok,[]}

3> S = sets:add_element("_see._tcp.local", sets:new()).
{set,1,16,16,8,80,48,
     {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
     {{[],[],[],[],
       ["_see._tcp.local"],
       [],[],[],[],[],[],[],[],[],[],[]}}}
4> sets:is_element("_see._tcp.local", S).
true
-------------------------


See also gb_sets and ordsets.

Igor.

On Tue, Nov 24, 2009 at 7:25 PM, Jarrod Roberson <> wrote:
> On Tue, Nov 24, 2009 at 3:18 PM, Jarrod Roberson <>wrote:
>
>>
>> process_dnsrec1(Sub,[#dns_rr{domain=Dom}|Rest]) ->
>>   case dict:find(Dom,Sub) of
>>       [Result] ->
>>           io:format("Interesting domain ~p=~p~n",[Dom,Result]);
>>
>
> thanks for reading I figured it out by trial and error.
> I replaced the [Result] with {ok,Result} and it started working as expected



-- 
"The secret of joy in work is contained in one word - excellence. To
know how to do something well is to enjoy it." - Pearl S. Buck.


More information about the erlang-questions mailing list