在Erlang中查找{key,value}列表中的值

aka*_*nuk 7 erlang tuples list

我是Erlang的新手,也许我只是在教程中错过了这个问题,尽管它很简单.比方说,我有一个从erlang获得的{Key,Value}对的列表:fun_info/1.我想知道函数arity,列表的其余部分对我没兴趣.所以我写了类似的东西:

find_value( _, [] ) ->
    nothing;
find_value( Key, [{Key, Value} | _] ) ->
    Value;
find_value( Key, [_ | T] ) ->
    find_value( Key, T).    
Run Code Online (Sandbox Code Playgroud)

然后做:

find_value( arity, erlang:fun_info( F )).
Run Code Online (Sandbox Code Playgroud)

我的工作正常,但像find_value这样的东西应该是一个太常见的例程吗?我没能在BIF中找到它的类似物.所以问题是:从{key,value}元组列表中获取密钥的值有一个很好的方法吗?

aro*_*tav 11

该模块proplists包含get_value/2,应该是你想要的.


Emi*_*röm 10

lists:keyfind/3做这个.在这里,我已将其映射到您的find_value/2界面:

find_value(Key, List) ->
    case lists:keyfind(Key, 1, List) of
        {Key, Result} -> Result;
        false -> nothing
    end.
Run Code Online (Sandbox Code Playgroud)

但是,支持者可能是一条更好的路线.