如何在满足特定条件时中断erlang中的循环流控制?

Dar*_*n L 2 erlang recursion loops break

我想用erlang编程语言在列表上进行搜索。在erlang中,因为我们没有循环构造,所以我们使用递归方法进行循环。但是,我想知道如何打破这个循环?说,一旦我们在列表中找到所需的元素。就像我们break在C语言中使用一样。

Jus*_*ood 5

Elem = 3
List = [1,2,3,4,5,6]

elem_in_list(_Elem, []) -> false;
elem_in_list(Elem, [Elem | _Rest]) -> true;
elem_in_list(Elem, [_Head | Rest]) -> elem_in_list(Elem, Rest).
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我们正在寻找3给定List。如果我们将其扩展,它将看起来像

elem_in_list(3, [ 1 | [2,3,4,5,6]]) % Matches [_Head | Rest]
elem_in_list(3, [ 2 | [3,4,5,6]]) % Matches [_Head | Rest]
elem_in_list(3, [ 3 | [4,5,6]]) % Matches [Elem | _Rest]
true
Run Code Online (Sandbox Code Playgroud)