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

How to add a new entry in each of the tuple in a list which is collection of tuples in erlang?

我有一个列表 - [{{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 写一个列表理解来实现这个结果吗?

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

在shell中:

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.