我遇到了應該很容易修復的問題。在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