2012-01-21 17 views
2

レコードをタプルリストに変換するマクロ定義を試してみようとしています。ような何か:タプルリストにレコードを書き込む

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

しかし、それは構文エラーを与える:

> Id = #id{id1=1,id2=2,id3=3}. 
{id,1,2,3} 
> ?record_to_tuplelist(id,Id). 
[{id1,1},{id2,2},{id3,3}] 

は、これまでのところ、私はこれを働きました。私がRecRef#Rec.XをRecRef#Rec {}に変更した場合、それは機能しますが、私が望むものは返されません。これはあいまいな構文エラーですか、これは実際には不可能ですか?

+0

あなたはどのように[検索](http://stackoverflow.com/questions/873532/how-do-i-turn-a-list-of-tuple学ぶべきです – danechkin

+3

これは、レコードへのタプルペアのリストです、私はその逆をしたいです。その答えは私が現在の試みの基礎を得たところです。特にあなたが間違っているときは、敵対的ではないことを学ぶべきです。 –

答えて

6

いいえ、レコード名とフィールド名の両方をアトムにする必要があります。どのように(未テスト)のようなものについて:

-define(record_to_tuplelist(Rec, Ref), lists:zip(record_info(fields, Rec),tl(tuple_to_list(Ref)))). 
+0

それは、ありがとう:) –

関連する問題