如何在列表中的每个元组中添加一个新条目,该列表是 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.
我有一个列表 - [{{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.