在erlang中,我想合并两个列表,如下
时,A = [1,2,3,4],B =["A1","A2","A3", A4),
想要的结果{1,"A1",{2,"A2",{3,"A3", {4, A4}]
我试过下面的
"模块(测试)。-出口([/0开始])。
start() ->
Abc = [2,3,1,4],
Bbc=["f1", "f2", "f3",f4],
ct:pal("Hello ~n"),
ct:pal("make_tuple_list ~p~n", [make_tuple_list(Abc,Bbc)]).
make_tuple_list([H1 | T1], [H2 | T2]) ->
[_ | _] = [{H1, H2} | make_tuple_list(T1, T2)].
make_tuple_list([], []) -> [].
"但是得到的系统错误如下
测试。Erl:14:函数make_tuple_list/2已经定义
thanks in advance.
试试下面的....
-module(test).
-export([start/0]).
start() ->
Abc = [2,3,1,4],
Bbc=["f1", "f2", "f3",f4],
ct:pal("Hello ~n"),
ct:pal("make_tuple_list ~p~n", [make_tuple_list(Abc,Bbc)]).
make_tuple_list([H1 | T1], [H2 | T2]) ->
[{H1, H2} | make_tuple_list(T1, T2)];
make_tuple_list([], []) -> [].
拆分函数子句的分隔符为;
。.
是函数定义终止符。在上面的例子中,两次出现的make_tuple_list
都以.
结束,这实际上意味着,在第二次出现时,我们重新定义了一个已经定义的函数,这在ErLang中是不允许的。
-module(lc).
-export([start/0]).
start() ->
Columns = ["id", "firstname", "lastname", "prefix", "initials", "birthday"],
Rows = [
[82, "Bob", "Dubalina", "", "B.", {1971,1,29}],
[45, "Alice", "Wonderland", "", "A.", {1975,2,14}],
[23, "John", "Doe", "", "J.", {1982,5,5}],
[72, "Jane", "Doe", "", "J.", {1995,7,17}]
],
Data = #{ "data" => [
maps:from_list([ {lists:nth(X, Columns) , lists:nth(X, Values)} || X <- lists:seq(1, length(Columns))])
|| Values <- Rows ]
},
Data.