【发布时间】:2012-04-27 12:09:17
【问题描述】:
我有一个包含一些元素的列表,现在在lists:foreach 的帮助下,我正在获取更多记录,我想将每个值附加到我现有的列表元素中,而不像在其他语言中那样在数组的帮助下创建新变量.
这是我得到的示例代码:
exception error: no match of right hand side value [6,7,1].
示例代码:
listappend() ->
A = [1,2,3,4,5],
B = [6,7],
lists:foreach(fun (ListA) ->
B = lists:append(B, [ListA])
end, A),
B.
我想要这样的输出,
B = [6,7,1,2,3,4,5].
【问题讨论】:
-
其实我想做动态之类的,我不知道列表 A 中有多少元素。我将创建多少新变量以及我如何知道在循环中创建了多少变量以及什么是我必须显示的最后一个变量吗?请帮忙...
-
您无法添加到现有列表。不变性阻止了这一点。 Read here
-
谢谢 Gert...但是有没有其他方法可以实现这个...
-
Ajay,您需要使用不同的变量:B1 = B ++ A。一旦 B 已经绑定到列表,就无法将其重新绑定到不同的值 [6,7] .
-
lists:foreach/2 实际上不用于列表操作。它用于产生副作用的功能,例如 I/O 或消息传递。列表操作应该没有副作用。 lists 模块为无副作用的列表操作提供了其他功能,例如 append/2、map/2 和 foldl/3 等等。
标签: list foreach erlang append