我的第一个问题是,我们可以更新一个支持列表或一个支持列表的元组吗?如果是这样,我必须替换一个proplist的元组值: 假设L,
L = [{a, A}, {b, B}, {c, C}, {d, D}, {e, E} ...]
我想用新元组{b, B}
替换元组{b, New_B_Value}
,并将元组d
替换为{d, New_D_Value}
。所以输出应该是这样的:
L = [{a, A}, {b, New_B_Value}, {c, C}, {d, D}, {d, New_D_Value} ...]
提前致谢!
答案 0 :(得分:10)
您可以使用list:keyreplace / 4 function:
lists:keyreplace(b, 1, L, {b, New_B_Value}).
lists:keyreplace(d, 1, L, {d, New_D_Value}).
答案 1 :(得分:1)
如果不需要灵活性,您可以使用一些子句来匹配b和d的元组并执行替换。
-module(t).
-export([test/0]).
test() ->
L = [{a, valA}, {b, valB}, {c, valC}, {d, valD}, {e, valE}],
test(L, [], new_b_value, new_d_value).
test([], A, _NewB, _NewD) -> A;
test([{b, _}|Rest], A, NewB, NewD) ->
test(Rest, A++[{b, NewB}], NewB, NewD);
test([{d, _}|Rest], A, NewB, NewD) ->
test(Rest, A++[{d, NewD}], NewB, NewD);
test([H|Rest], A, NewB, NewD) ->
test(Rest, A++[H], NewB, NewD).