关于keyfind的优化

来源:互联网 发布:nba2k17 mac版本 编辑:程序博客网 时间:2024/05/22 12:51
使keyfind可以设置两个查找条件,keyfind到多个值
keysfind(Id1, IdType1, List, Id2, IdType2) ->
    Lists1 = keyfinds(Id1, IdType1, List),
    Lists2 = keyfinds(Id2, IdType2, List),
    Lists1Rest = Lists1 -- Lists2,
    Lists1Result = Lists1 -- Lists1Rest,
    Lists1Result.
%%keyfind多个值
keyfinds(Id, Id1, List) ->
    Yuansu = lists:keyfind(Id, Id1, List),
    Lists1 = lists:delete(Yuansu, List),
    if
        length(Lists1) =:= length(List)->
            [];
        true ->
            keyfinds(Id, Id1, Lists1, [Yuansu])
    end.
keyfinds(Id, Id1, List, JieGuoList) ->
    Yuansu = lists:keyfind(Id, Id1, List),
    Lists1 = lists:delete(Yuansu, List),
    if
        length(Lists1) =:= length(List)->
            JieGuoList;
        true ->
            keyfinds(Id, Id1, Lists1, [Yuansu | JieGuoList])
    end.