使用lists:keyfind/3
或proplists:get_value/2,3
。
lists:keyfind/3
是完成这项任务的最佳选择。它是一个 BIF,因此是用 C 编写的。它比proplists
模块或任何其他纯 erlang 实现要快得多。它还能够处理具有不同位置的键的更复杂的元组(如果你有一个记录列表就是这种情况)。
例子
使用lists
模块:
{pear, fruit} = lists:keyfind(pear, 1, Db),
false = lists:keyfind(cucumber, 1, Db).
使用proplists
模块:
fruit = proplists:get_value(pear, Db),
undefined = proplists:get_value(cucumber, Db),
{error, instance} = proplists:get_value(cucumber, Db, {error, instance}).
甚至将两者与proplists
-style混合keyfind
:
get_value(Key, List) -> get_value(Key, List, undefined).
get_value(Key, List, Default) ->
case lists:keyfind(Key, 1, List) of
false -> Default;
{Key, Value} -> Value
end.
用法:
fruit = get_value(pear, Db),
undefined = get_value(cucumber, Db),
{error, instance} = get_value(cucumber, Db, {error, instance}).