如何在列表中的每个元组中添加新条目,该列表是erlang中元组的集合?

时间:2019-08-09 02:58:01

标签: list erlang tuples

我有一个类似-[{{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编写列表理解来达到这个结果吗?

1 个答案:

答案 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.