我正在尝试制定一个宏定义,将记录转换为元组列表。类似于以下代码:
但这会导致语法错误。如果我将 RecRef#Rec.X 改为 RecRef#Rec{},它可以正常工作,但是不能返回我想要的结果。这只是一个晦涩难懂的语法错误,还是实际上不可能呢?
> 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{},它可以正常工作,但是不能返回我想要的结果。这只是一个晦涩难懂的语法错误,还是实际上不可能呢?