📜  Erlang-循环(1)

📅  最后修改于: 2023-12-03 14:41:00.064000             🧑  作者: Mango

Erlang循环

Erlang是一种面向并发、实时和分布式应用程序的编程语言。在Erlang中,可以使用多种类型的循环结构,这些循环结构可以用于不同的情况。

for循环

Erlang中的for循环与其他编程语言中的for循环类似。例如,要从1到10的数字进行迭代,可以使用以下代码:

-module(my_module).
-export([my_function/0]).

my_function() ->
  for_loop(1, 10).

for_loop(Start, End) ->
  for_loop(Start, End, []).
for_loop(Start, End, List) when Start =< End ->
  for_loop(Start+1, End, [Start|List]);
for_loop(_, _, List) ->
  List.

这个示例代码定义了一个由my_function函数调用的for_loop函数。my_function函数是程序的起点,因为所有的Erlang应用程序都必须有一个名为'init'的函数或一个以'-s'或'-run'选项作为参数的函数。

在for_loop函数中,我们首先定义了一个新函数'for_loop(Start, End, List)',它将从Start迭代直到End,并将其结果存储在一个列表中。在迭代过程中,我们使用一个支持动态变量赋值的符号'->'。在每次循环迭代时,Start的值均增加1。通过对Start和End的值进行比较,我们最终停止迭代,并返回一个包含所有数字的列表。

while循环

Erlang中的while循环也是基本的循环结构之一。与for循环不同,while循环不需要通过变量迭代。简单的while循环示例如下:

-module(my_module).
-export([my_function/0]).

my_function() ->
  while_loop(10).

while_loop(0) ->
  done;
while_loop(N) ->
  io:fwrite("~p ", [N]),
  while_loop(N-1).

while_loop函数定义了两个子函数,每个子函数都执行不同的操作。在第一个子函数中,我们使用一个模式匹配来检测不等于0的值。如果不为0,则打印当前的值,并递归调用该函数,并将值减1。

在Erlang中,如果一个函数在执行时不返回任何值,则被认为是null。在while_loop函数中,我们将'null'符号替换为'done',以指明该函数已完成执行。

list comprehension

另一个在Erlang中常用的循环结构是列表推导式。列表推导式通常用于处理列表,并生成新的列表。以下是一个简单的示例:

-module(my_module).
-export([my_function/0]).

my_function() ->
  List = [1,2,3,4,5],
  [X*2 || X <- List].

在这个示例代码中,我们首先定义了一个列表'List',然后使用列表推导式生成一个新的列表。列表推导式包括两部分:一个条件和一个操作。在这个例子中,条件是'X <- List',它表示从'List'中取出每个元素'X'。操作是将元素乘以2。因此,新列表包含了原列表中每个元素的2倍。

循环在Erlang中的应用

循环在Erlang中的应用非常广泛。它们可以用于迭代数据,处理列表,生成新列表,以及实现其他不同的算法。总之,循环在Erlang中是一个必不可少的工具。