Erlang列出:foreach副作用

时间:2016-06-01 16:44:55

标签: erlang

可以使用列表:foreach 函数删除回调函数中的元素吗?即,如果修改发生迭代的列表,是否会有任何问题。

1 个答案:

答案 0 :(得分:5)

我想这个简单的答案是否定的。

lists:foreach/2函数用于在列表中的所有元素上运行特定函数。除此之外,它还返回ok原子。它没有返回列表,正如文档所定义的那样。

  

foreach(Fun, List) -> ok
  为Fun(Elem)中的每个元素Elem调用List。此功能用于其副作用,评估顺序定义为与列表中元素的顺序相同。

如果要对每个元素执行某些功能并返回包含此函数结果的列表,则可以使用lists:map/2。但请注意,与foreach相比,map并不保证任何评估顺序。

如果您只想从列表中删除元素,请使用lists:delete/2