Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在元组列表上使用Map并在Erlang中将其打印为平面字符串_String_Erlang_Map - Fatal编程技术网

String 在元组列表上使用Map并在Erlang中将其打印为平面字符串

String 在元组列表上使用Map并在Erlang中将其打印为平面字符串,string,erlang,map,String,Erlang,Map,我有一个元组列表: X = [{"alpha","beta"},{"gamma","theta"}]. 我想使用,io_lib:format(“~s”,[X])以以下格式将X打印为平面字符串: [{"x":"alpha", "y":"beta"}, {"x":"gamma", "y":"theta"}] 我如何做到这一点?我开始使用Map来转换列表。但我无法将其打印为字符串…(在X上给出了一个未绑定的变量错误)。看起来像是JSON序列化! 您应该仔细看看,因为它几乎完全符合您的要求。享受整洁

我有一个元组列表:

X = [{"alpha","beta"},{"gamma","theta"}].
我想使用,
io_lib:format(“~s”,[X])
以以下格式将X打印为平面字符串:

[{"x":"alpha", "y":"beta"}, {"x":"gamma", "y":"theta"}]

我如何做到这一点?我开始使用Map来转换列表。但我无法将其打印为字符串…(在X上给出了一个未绑定的变量错误)。

看起来像是JSON序列化! 您应该仔细看看,因为它几乎完全符合您的要求。

享受整洁的技巧:

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"}]
1>X=[{“alpha”,“beta”},{“gamma”,“theta”}]。
2> F=fun(X)->[[$,[124; H][124; T]=[[$,[124;[“{”X\“:\”,A,“\”,“y\”:\”,B,“\”}”][124;{A,B}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]).
然后:


您应该这样打印:

[{A,B},{G,T}]=X


io_lib:format(“[{x:~s,y:~s},{x:~s,y:~s}]”,[A,B,G,T])

如果您可以发布/编辑以添加有帮助的代码片段-x上的未绑定错误意味着x没有值,并且x和“x”之间的差异:“alpha”位有点神秘。如果您想在“erlang”中打印x格式化,使用~p指令,而不是~s.~s。假定参数是字符列表,而不是元组列表。
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