У меня есть следующие настройки:
1> rd(rec, {name, value}).
rec
2> L = [#rec{name = a, value = 1}, #rec{name = b, value = 2}, #rec{name = c, value = 3}].
[#rec{name = a,value = 1},
#rec{name = b,value = 2},
#rec{name = c,value = 3}]
3> M = [#rec{name = a, value = 111}, #rec{name = c, value = 333}].
[#rec{name = a,value = 111},#rec{name = c,value = 333}]
Элементы в списке L
уникальны в зависимости от их name
.Я также не знаю предыдущих значений элементов в списке M
.Я пытаюсь обновить список L
значениями в списке M
, сохраняя при этом элементы L
, которых нет в M
.Я сделал следующее:
update_values([], _M, Acc) ->
Acc;
update_attributes_from_fact([H|T], M, Acc) ->
case [X#rec.value || X <- M, X#rec.name =:= H#rec.name] of
[] ->
update_values(T, M, [H|Acc]);
[NewValue] ->
update_values(T, M, [H#rec{value = NewValue}|Acc])
end.
Это делает свою работу, но мне интересно, есть ли более простой метод, который использует бифы.
Большое спасибо.