Erlang:打破列表:foreach“循环”
我在 Erlang 中有一个元素列表,我使用lists:foreach 来遍历列表中的元素。有没有办法在遍历过程中摆脱这个“foreach 循环”。例如:假设如果我在列表 [2, 4, 5, 1, 2, 5] 中遇到“1”,我想停止进一步遍历列表。我该怎么做?
I have a list of elements in Erlang, and I'm using lists:foreach to traverse through the elements in the list. Is there a way to break out of this "foreach loop" in the middle of the traversal. For eg: suppose I want to stop traversing the list further if I encounter a '1' in the list [2, 4, 5, 1, 2, 5]. How do I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
另一种方法是使用
throw
和catch
:在 shell 中运行时,输出:
编辑:根据大众的需求,一个更精确版本,仅捕获您想要捕获的内容:
Another way to do it is to use
throw
andcatch
:When run in the shell, this outputs:
EDIT: By popular demand, a more precise version that catches only what you want to catch:
当然,这是非常粗略的例子。
Of course this is very rough example.
lists 模块中有很多不错的功能:
或者更有效但不太好
There are many nice functions in lists module:
or more effective but less nice
我遇到了同样的问题并通过以下方式解决:
下面是一个示例解释如何使用:
I meet the same problem and solve it by this way:
Below is an example explained how to use:
列表:全部?
每当 do_something 返回 false 时就会中断并在 IsCompleted 中返回结果。
lists:all?
Will break out whenever do_something returns false and return the results in IsCompleted.