У меня есть веб-приложение на Erlang, основанное на Mochiweb и Mnesia, которое потребляет и выдает JSON. Имеет смысл хранить записи в Mnesia; однако Mochiweb / Mochijson требуют данные в формате проплист. Итак, я получаю большой объем шаблонного кода:
-record(foobar, {name, value}).
record_to_proplist(Record)->
[{name, Record#foobar.name},
{value, Record#foobar.value}].
proplist_to_record(Props)->
#foobar{name=proplists:get_value("name", Props),
value=proplists:get_value("value", Props)}.
Прекрасно с одной маленькой записью, боль с большим количеством больших записей. Может ли кто-нибудь предложить способ обойти весь этот шаблонный код? Думаю, мне нужен способ динамически проверять поля записи; и поскольку записи являются конструкцией времени компиляции, я предполагаю [предполагая, что ' возможно] это означает внедрение кода с помощью макроса ..
Спасибо!