【问题标题】:How to add a new entry in each of the tuple in a list which is collection of tuples in erlang?如何在列表中的每个元组中添加一个新条目,该列表是 erlang 中的元组集合?
【发布时间】:2019-12-16 18:38:19
【问题描述】:

我有一个类似的列表 - [{{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 编写一个列表推导来实现这个结果吗?

【问题讨论】:

  • 每次调用getNum() 都会返回一个号码吗?
  • 没有。它可以给出不同的数字。
  • 是的,当然。我的问题是,是否每次调用 getNum() 都会返回一个数字,或者它是否会返回一个元组或数字列表。你提到一个“系列”,这就是我问的原因。
  • @LutzHorn:我想到了单数系列。但是,我认为将其扩展到元组应该是相似的。
  • 让我试试。 Lutz Horn 在问这个问题:是否像它的名字所暗示的那样调用getNum() 并返回一个数字,例如10,或者调用getNum() 是否会返回一个数字列表,例如[10, 5, 11, 12]?

标签: list erlang tuples


【解决方案1】:
-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.

【讨论】:

    猜你喜欢
    • 2014-09-17
    • 2012-10-28
    • 2019-05-20
    • 2022-01-08
    • 2023-03-21
    • 2021-11-11
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多