将Erlang记录转换为元组列表

3
我正在尝试制定一个宏定义,将记录转换为元组列表。类似于以下代码:
> Id = #id{id1=1,id2=2,id3=3}.
{id,1,2,3}
> ?record_to_tuplelist(id,Id).
[{id1,1},{id2,2},{id3,3}]

到目前为止,我已经解决了这个问题:

-define(record_to_tuplelist(Rec,RecRef), [ {X,RecRef#Rec.X} || X <- record_info(fields,Rec) ]).

但这会导致语法错误。如果我将 RecRef#Rec.X 改为 RecRef#Rec{},它可以正常工作,但是不能返回我想要的结果。这只是一个晦涩难懂的语法错误,还是实际上不可能呢?

你应该学习如何搜索 - danechkin
4
那是一个元组对列表转换成记录,我想要相反的。那个答案是我目前尝试的基础。你应该学会不要敌对,特别是当你错了的时候。 - Mediocre Gopher
1个回答

7
不,记录名称和字段名称都必须是原子类型。那么像这样的东西怎么样(未经测试):
-define(record_to_tuplelist(Rec, Ref), lists:zip(record_info(fields, Rec),tl(tuple_to_list(Ref)))).

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接