我有一个类似-[{{1},{2}},{{a},{3}},{{4},{b}},{{5},{6}}]
我有一个函数,可以生成一系列数字-
getNum()
我必须将上面API生成的数字添加到上面列表中的每个元组中。
所以结果列表应该看起来像-
[{{1},{2},{10}},{{a},{3},{11}},{{4},{b},{12}},{{5},{6},{13}}]
这里的条目10、11、12、13来自API getNum()。
有人可以帮忙用erlang编写列表理解来达到这个结果吗?
答案 0 :(得分:4)
-module(a).
-compile(export_all).
go() ->
List = [{{1},{2}},{{a},{3}},{{4},{b}},{{5},{6}}],
[{{X}, {Y}, {getNum()}} || {{X}, {Y}} <- List ].
getNum() ->
Num = rand:uniform(20),
io:format("getNum() => ~w~n", [Num]),
Num.
在外壳中:
8> a:go().
getNum() => 5
getNum() => 17
getNum() => 16
getNum() => 6
[{{1},{2},{5}},{{a},{3},{17}},{{4},{b},{16}},{{5},{6},{6}}]
您也可以这样:
-module(a).
-compile(export_all).
go() ->
List = [{{1},{2}},{{a},{3}},{{4},{b}},{{5},{6}}],
[erlang:append_element(TwoTuple, {getNum()}) || TwoTuple <- List ].
getNum() ->
Num = rand:uniform(20),
io:format("getNum() => ~w~n", [Num]),
Num.