Erlang 在列表中插入元组

Erlang Insert tuples in a list

这是一个示例,我正在努力实现的目标:

案例一

>Fn = fun(X) -> {X, 3} end.
>A = {{1,2}, {3, 4}, Fn(8)}.
>{{1,2},{3,4},{8,3}}

这在多个元组的情况下非常有效well.But

案例二

>Fn2 = fun(X) -> {X, 3},{7,5} end. 
>A1 = {{1,2}, {3, 4}, Fn2(8)}.
>{{1,2},{3,4},{7,5}}

请给我建议解决方案,以便我可以为 CASE II

实现以下结果
>{{1,2},{3,4},{8, 3}, {7,5}}

我认为您需要使用列表 ([ ... ]) 而不是元组 ({ ... }):

> Fn3 = fun(X) -> [{X, 3},{7,5}] end.
> [{1,2}, {3, 4}| Fn3(8)].            
[{1,2},{3,4},{8,3},{7,5}]

首先,解释第二种情况发生的情况:当你写Fn2 = fun(X) -> {X, 3},{7,5} end时,它的意思是“给定X,创建并丢弃元组{X, 3},然后return元组{7, 5}.

您似乎也混淆了元组和列表。元组不是这样使用的;它们用于固定大小的结构。如果你真的想得到一个列表,很简单:

> Fn2 = fun(X) -> [{X, 3},{7,5}] end. 
> A1 = [{1,2}, {3, 4}] ++ Fn2(8).
[{1,2},{3,4},{8,3},{7,5}]
> A2 = [{1,2}] ++ Fn2(8) ++ [{3, 4}].
[{1,2},{8,3},{7,5},{3,4}]
> A3 = Fn2(8) ++ [{1,2}, {3, 4}].
[{8,3},{7,5},{1,2},{3,4}]