我試圖從proplist中刪除單個頂級元素。我將如何去做這件事。Erlang:從proplist中刪除單個元素
我有一個proplist變種,像這樣:
[{listA,[a,b,c]},{listB,[d,e]}]
那麼我將如何從刪除listA的頂級元素?
我試圖從proplist中刪除單個頂級元素。我將如何去做這件事。Erlang:從proplist中刪除單個元素
我有一個proplist變種,像這樣:
[{listA,[a,b,c]},{listB,[d,e]}]
那麼我將如何從刪除listA的頂級元素?
您可以使用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]}]
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]}]
http://www.erlang.org/doc /man/lists.html < - 這可能有幫助。 – fizix00
當我使用proplist時,我試圖使用proplist:delete,但是這肯定會刪除listA中的所有元素,而我只是想刪除它。 – User
http://www.erlang.org/doc/man/proplists.html#lookup-2 你能用這樣的東西來「索引」第一個元素,然後刪除它嗎? – fizix00