2

わかりましたので、ここに行きます:

次のようなコードを取得しました。

A=lists:map(fun(Result) -> Result#o.prop1 
   end, ResultList),
B=lists:map(fun(Result) -> io:format("~p~n",Result#o.prop2),
   Result#o.prop2 
   end, ResultList),
io:format("~p ~p",[A,B])

このコードの前に、データベース検索の結果のリストがあります (各結果には、「0」とマークされた prop1 値と「74」とマークされた prop2 値があります)。

何が起こるかというと、A は正しく ("[0,0]") 印刷され、B 要素の最初の印刷は 1 つずつ正しく ("74" の 2 つの印刷)、リスト自体は "JJ" として印刷されます (これらの文字は実行ごとに常に異なります)

要素ごとに要素を削除すると、または順序を入れ替えても (B の行と A の行)、常にめちゃくちゃな B が表示されます。

何か助けはありますか?

4

1 に答える 1

3

74 ではなく J が表示されている理由は、Erlang が文字列を整数のリストとして扱い、ASCII では J が 74 (10 進数) であるためです。

1> io:format("~s~n", [[74, 74]]).
JJ
ok
2> io:format("~s~n", [[71, 72, 73, 74, 75]]).
GHIJK
ok
3> io:format("~p~n", [[71, 72, 73, 74, 75]]).
"GHIJK"
ok
于 2013-02-20T18:16:49.710 に答える