可以使用列表:foreach 函数删除回调函数中的元素吗?即,如果修改发生迭代的列表,是否会有任何问题。
答案 0 :(得分:5)
我想这个简单的答案是否定的。
lists:foreach/2
函数用于在列表中的所有元素上运行特定函数。除此之外,它还返回ok
原子。它没有返回列表,正如文档所定义的那样。
foreach(Fun, List) -> ok
为Fun(Elem)
中的每个元素Elem
调用List
。此功能用于其副作用,评估顺序定义为与列表中元素的顺序相同。
如果要对每个元素执行某些功能并返回包含此函数结果的列表,则可以使用lists:map/2
。但请注意,与foreach
相比,map
并不保证任何评估顺序。
如果您只想从列表中删除元素,请使用lists:delete/2
。