如何使用Erlang迭代列表中的所有元素

use*_*428 4 erlang loops for-loop

我是Erlang的新手.我想做的就是获取一个列表,循环遍历每个元素,这样我就可以将它们发送给一个函数.在任何地方都找不到明确的例子.

我想做的例子:

Mylist = [a,b,c,d,e,f,g]

for (i in Mylist) {
  otherFunction(Mylist[i]);
}
Run Code Online (Sandbox Code Playgroud)

bxd*_*oan 9

希望有帮助:)

func([]) -> ok;
func([H|T]) ->
    otherFunction(H),
    func(T).
Run Code Online (Sandbox Code Playgroud)

或者你可以使用列表理解:

[otherFunction(H) || H <- L].
Run Code Online (Sandbox Code Playgroud)


Eug*_*vin 6

您可以使用 lists:foreach

L = [a,b,c,d,e,f,g],
Function = fun(Elem) -> atom_to_binary(Elem, utf8) end,
lists:foreach(Function, L).
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要从该函数中获取某些结果,则可以使用lists:foldl或lists:foldr

L = [a,b,c,d,e,f,g],
F = fun(Elem, Acc) -> [atom_to_binary(Elem, utf8) | Acc] end,
lists:foldl(F, [], L).
Run Code Online (Sandbox Code Playgroud)

回应将是

[<<"g">>,<<"f">>,<<"e">>,<<"d">>,<<"c">>,<<"b">>,<<"a">>]
Run Code Online (Sandbox Code Playgroud)