如何在Erlang中创建一个简单的循环? (例如,从1到10循环。)
答案 0 :(得分:6)
创建一个递归结构(这循环10次):
loop(0) ->
ok;
loop(Count) ->
% do something
loop(Count-1).
或者从1到10:
do_loop() ->
loop(1).
loop(10) ->
ok;
loop(Count) ->
% do something
loop(Count+1).
您还可以使用lists:seq(1, 10)
来获取1到10之间的序列。
答案 1 :(得分:2)
Davin Tryon的代码示例完全符合您的要求:从1到10的循环。但是如果您运行此代码,它将只生成结果ok,而没有任何证据表明它确实成了循环:从功能点开始视图代码可以替换为:
do_loop() -> ok.
它具有完全相同的效果:它产生结果ok。实际上在erlang中,通常不进行这样的循环,有一些构造如list,map,gb_tree,ets ......它们允许以不同的方式遍历数据并替换在命令式语言中可以找到的常用循环。
在Erlang中,最常见的循环是无限循环,它允许进程保持活动状态(在某些C代码中可以找到while(1))。
答案 2 :(得分:0)
-module(ownrecurse).
-export([while/1,while/2, start/0]).
while(L) -> while(L,0).
while([], Acc) -> Acc;
while([_|T], Acc) ->
io:fwrite("~w~n",[Acc]),
while(T,Acc+1).
start() ->
X = lists:seq(1,99),
while(X).