proplists:append_values/2
把列表里所有相同键的值追加起来
用法:
append_values(Key, ListIn) -> ListOut
内部实现:
-spec append_values(Key, ListIn) -> ListOut when
Key :: term(),
ListIn :: [term()],
ListOut :: [term()].
append_values(Key, [P | Ps]) ->
if is_atom(P), P =:= Key ->
[true | append_values(Key, Ps)];
tuple_size(P) >= 1, element(1, P) =:= Key ->
case P of
{_, Value} when is_list(Value) ->
Value ++ append_values(Key, Ps);
{_, Value} ->
[Value | append_values(Key, Ps)];
_ ->
append_values(Key, Ps)
end;
true ->
append_values(Key, Ps)
end;
append_values(_Key, []) ->
[].
把列表 ListIn 所有相同的键 Key 的值追加起来,这个函数跟 proplists:get_all_values/2 类似。不同的是键里的每个值都包含在一个列表里(除它本身是一个列表之外)。
proplists:append_values(a, [{a, [1, 2]}, {b, 0}, {a, 3}, {c, -1}, {a, [4]}]).
proplists:append_values(a, [{a, 1}, {b, 2}, {a, 3}, {c, -4}, {d, 5}]).