Aja*_*y V 5 erlang foreach list append
我有一个包含一些元素的列表,现在在lists:foreach我获取更多记录的帮助下,我想将每个值附加到我现有的列表元素中,而无需像在其他语言中那样借助数组创建新变量。
这是我得到的示例代码:
exception error: no match of right hand side value [6,7,1].
Run Code Online (Sandbox Code Playgroud)
示例代码:
listappend() ->
A = [1,2,3,4,5],
B = [6,7],
lists:foreach(fun (ListA) ->
B = lists:append(B, [ListA])
end, A),
B.
Run Code Online (Sandbox Code Playgroud)
我想要输出,
B = [6,7,1,2,3,4,5].
Run Code Online (Sandbox Code Playgroud)
首先,此功能已经存在,因此您无需自己实现。实际上,列表可以将两个列表作为参数:
1> lists:append([1,2,3,4,5], [6,7]).
[1,2,3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)
它实际上是这样实现的:
2> [1,2,3,4,5] ++ [6,7].
[1,2,3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)
请记住,++ 运算符将复制左操作数,因此此操作很容易导致二次复杂度。也就是说,您可能希望使用“cons”运算符构建您的列表(最终在计算结束时反转列表):
3> [1|[2,3,4,5,6,7]].
[1,2,3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)
在任何情况下,您的函数中都可以有两个参数,它们是要附加的两个列表,而不是在函数体中定义它们。这样,每次调用my_append/2函数时 A 和 B 的值都会改变。
my_append(A, B) ->
YOUR_CODE_GOES_HERE
Run Code Online (Sandbox Code Playgroud)
请注意,关于您收到的实际错误,这是由于以下行:
B = lists:append(B, [ListA])
Run Code Online (Sandbox Code Playgroud)
在每次迭代期间,您将一个新值绑定到变量B,该变量已经绑定到值[6,7]。
| 归档时间: |
|
| 查看次数: |
13170 次 |
| 最近记录: |