📜  Erlang-函数(1)

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

Erlang 函数

Erlang 是一种并发、函数式编程语言,它被广泛用于构建可扩展、高可靠性和分布式的软实时系统。Erlang 函数是 Erlang 程序的基本构建块,它们用于实现具体的功能和任务。

函数的定义

在 Erlang 中,函数定义遵循以下形式:

函数名(参数1, 参数2, ...) ->
    表达式1;
    表达式2;
    ...
    表达式n.
  • 函数名 是函数的标识符,用于调用该函数。
  • (参数1, 参数2, ...) 是传递给函数的参数列表。Erlang 函数可以具有零到多个参数。
  • 表达式1; 表达式2; ... 表达式n. 是函数体中的一系列表达式,用分号 (;) 分隔。函数体中最后一个表达式的结果将作为函数返回值。

以下是一个简单的 Erlang 函数示例:

hello_world() ->
    io:format("Hello, World!").
函数的调用

使用函数需要调用它们。在 Erlang 中,调用函数的语法为 模块名:函数名(参数1, 参数2, ...)

以下是调用上述示例函数的代码:

module_name:hello_world().
递归函数

Erlang 函数非常适合递归。递归函数是指在函数体中调用自身的函数。Erlang 支持尾递归优化,这意味着递归调用的结果不会被放入函数的调用栈中。

以下是一个使用递归实现阶乘的 Erlang 函数示例:

factorial(0) ->
    1;
factorial(N) when N > 0 ->
    N * factorial(N - 1).

调用上述函数计算阶乘的代码如下所示:

module_name:factorial(5).
匿名函数

除了常规函数,Erlang 还支持匿名函数。匿名函数可以在表达式中被定义和传递,它们在许多场景下非常有用。

以下是匿名函数的基本语法:

Fun = fun (参数1, 参数2, ...) ->
              表达式1;
              表达式2;
              ...
              表达式n
       end.

以下是一个匿名函数示例,用于获取列表的所有奇数元素:

OddElements = fun (List) ->
                  lists:filter(fun (X) -> X rem 2 =:= 1 end, List)
              end.

调用上述匿名函数获取列表 [1, 2, 3, 4, 5] 的所有奇数元素的代码如下所示:

OddElements([1, 2, 3, 4, 5]).
总结

Erlang 函数是构建可靠且并发的软实时系统的关键。它们可以定义、调用和递归,并且匿名函数提供了更大的灵活性。在使用 Erlang 进行程序开发时,熟悉函数的概念和使用是至关重要的。