我正在尝试从proplist中删除单个顶部元素。我该怎么做呢。
我有一个这样的支持者:
[{listA,[a,b,c]},{listB,[d,e]}]
那么如何从listA中删除top元素?
答案 0 :(得分:2)
您可以使用lists:keytake/3
获取元素,然后修改它并将其放回:
1> List = [{listA,[a,b,c]},{listB,[d,e]}].
[{listA,[a,b,c]},{listB,[d,e]}]
2> lists:keytake(listA, 1, List).
{value,{listA,[a,b,c]},[{listB,[d,e]}]}
3> {value, {listA, [_|Items]}, Options} = lists:keytake(listA, 1, List).
{value,{listA,[a,b,c]},[{listB,[d,e]}]}
4> [{listA, Items}|Options].
[{listA,[b,c]},{listB,[d,e]}]
答案 1 :(得分:2)
remove_head(Name, PropList) ->
lists:reverse(
remove_head(Name, PropList, [])
).
remove_head(_Name, [], Results) -> Results;
remove_head(Name, [ {Name, [_H|T]} | Tail ], Results) ->
remove_head(Name, Tail, [{Name, T}|Results]);
remove_head(Name, [H|T], Results) ->
remove_head(Name, T, [H|Results]).
示例:
47> c(my).
{ok,my}
48> P1= [
48> {listA, [a,b,c]},
48> {listB, [d,e]}
48> ].
[{listA,[a,b,c]},{listB,[d,e]}]
49> my:remove_head(listA, P1).
[{listA,[b,c]},{listB,[d,e]}]
50> P2 = [
50> {listA, [a,b,c]},
50> {listB, [d,e]},
50> {listA, [y, x, x]}
50> ].
[{listA,[a,b,c]},{listB,[d,e]},{listA,[y,x,x]}]
51> my:remove_head(listA, P2).
[{listA,[b,c]},{listB,[d,e]},{listA,[x,x]}]