我遇到了应该很容易修复的问题。在this之后,我试图访问记录中的字段。下面是我的表现问题,一个简单的例子:语法访问记录中的字段时出错
-module(test).
-export([test/0]).
-record(rec, {f1=[], f2=[], f3=[]}).
test() ->
Rec = #rec{f1=[1,2,3], f3=[4,5,6]},
Fields = record_info(fields, rec),
loop(Fields, Rec).
loop([Field|Fields], Rec) ->
[Rec#rec.Field|loop(Fields, Rec)]; %% <-- This is line 12.
loop([], _Rec) ->
[].
当我尝试编译测试,我得到一个语法错误:
./test.erl:12: syntax error before: Field
我在做什么错?
的问题是,您要收拾运行在编译时关心。这意味着您正在尝试在程序编译期间评估和替换Field的真实值[在程序执行期间可用]。通常,问题可以通过预处理或元编程来解决。不幸的是,我不知道Erlang的最佳方法是什么。 – Damg 2010-10-22 22:49:50