我有元組的列表:元組的名單上使用地圖和打印的扁帶在二郎山
X = [{"alpha","beta"},{"gamma","theta"}].
我想在使用以下格式打印X作爲扁帶,io_lib:format("~s", [X])
:
[{"x":"alpha", "y":"beta"}, {"x":"gamma", "y":"theta"}]
如何實現這一目標?我開始使用Map來轉換列表。但是我無法將它打印成字符串......(在X上給出了一個未綁定的變量錯誤)。
我有元組的列表:元組的名單上使用地圖和打印的扁帶在二郎山
X = [{"alpha","beta"},{"gamma","theta"}].
我想在使用以下格式打印X作爲扁帶,io_lib:format("~s", [X])
:
[{"x":"alpha", "y":"beta"}, {"x":"gamma", "y":"theta"}]
如何實現這一目標?我開始使用Map來轉換列表。但是我無法將它打印成字符串......(在X上給出了一個未綁定的變量錯誤)。
瘋狂地看起來像JSON序列化! 你應該看看rfc4627.erl,因爲它幾乎完全符合你的要求。
享受絕招:
1> X = [{"alpha","beta"},{"gamma","theta"}].
2> F = fun(X) -> [[$,|H]|T] = [[$,|["{\"x\":\"",A,"\", \"y\":\"",B,"\"}"]] || {A,B} <- X], [$[,[H|T],$]] end.
#Fun<erl_eval.6.111823515>
3> io:format("~s~n", [F(X)]).
[{"x":"alpha", "y":"beta"},{"x":"gamma", "y":"theta"}]
通知所有的字符串操作,我裏面F
做是O(1)。
嘗試這種情況:
tuplelist_to_string(L) ->
tuplelist_to_string(L,[]).
tuplelist_to_string([],Acc) ->
lists:flatten(["[",
string:join(lists:reverse(Acc),","),
"]"]);
tuplelist_to_string([{X,Y}|Rest],Acc) ->
S = ["{\"x\":\"",X,"\", \"y\":\"",Y,"\"}"],
tuplelist_to_string(Rest,[S|Acc]).
然後:
1> X = [{"alpha","beta"},{"gamma","theta"}].
[{"alpha","beta"},{"gamma","theta"}]
2> io:format("~s~n",[test:tuplelist_to_string(X)]).
[{"x":"alpha", "y":"beta"},{"x":"gamma", "y":"theta"}]
ok
你應該只是打印這種方式:
[{A,B},{G,T}] = X
io_lib:格式( 「[{X:〜S,Y:〜S},{X:〜S,Y:〜S}]」,[A,B,G,T])
如果您可以發佈/編輯以添加您的代碼片段,這將有所幫助--X上的未綁定錯誤意味着X沒有值,並且X與「x」:「alpha」位之間的差異有點兒一個謎。 如果要以「erlang」格式打印X,請使用〜p指令,而不是〜s。 ~s假定參數是一個字符列表,而不是元組列表。 – 2009-06-26 15:41:45