English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Erlang 函数

Erlang ist eine weit bekannte funktionale Programmiersprache, daher werden Sie viele Punkte darüber finden, wie Funktionen in Erlang arbeiten. Dieses Kapitel stellt vor, wie mit Funktionen in Erlang alle Operationen durchgeführt werden können.

Funktion definieren

Die Syntax für die Definition einer Funktion ist wie folgt:

Syntax

FunctionName(Pattern1… PatternN) ->
Body;

在这里,

  • FunctionName − 函数名称是一个原子(唯一性)

  • Pattern1... PatternN − 每个参数都是一个模式。参数的个数N是函数的参数数量。函数名称由模块、函数名和定义的参数数量是唯一的。即,具有相同名称并在相同模块中的两个函数,但它们具有不同参数数量也算作两种不同的函数。

  • Body − 一个子句主体是由以逗号分隔的表达式序列组成 (,)

Das folgende Programm ist ein einfaches Beispiel für die Verwendung einer Funktion -

Beispiel

-module(helloworld). 
-export([add/2,start/0]). 
add(X,Y) -> 
   Z = X+Y, 
   io:fwrite("~w~n",[Z]). 
   
start() -> 
   add(5,6).

Für das obige Programm gibt es einige Punkte zu beachten-

  • Wir definieren zwei Funktionen, eine Funktion ist add, die 2 Parameter, eine Funktion ist start ;

  • Diese beiden Funktionen werden mit der Funktion export definiert. Tun wir das nicht, dann können die Funktionen nicht verwendet werden;

  • Eine Funktion kann in einer anderen Funktion aufgerufen werden. Hier wird die Funktion add im start-Funktion aufgerufen;

上述代码的输出结果是 -

11

Anonyme Funktion

Eine anonyme Funktion ist eine Funktion, die jedoch mit keinem Namen verbunden ist. In Erlang gibt es Werkzeuge, um anonyme Funktionen zu definieren. Das folgende Programm ist ein Beispiel für eine anonyme Funktion.

Beispiel

-module(helloworld). 
-export([start/0]). 
start() -> 
   Fn = fun() -> 
      io:fwrite("Anonyme Funktion") end, 
   Fn().

Für das obige Beispiel gibt es einige Punkte zu beachten -

  • Anonyme Funktionen werden mit dem Schlüsselwort fun() definiert

  • Diese Funktion wird einer Variable namens Fn zugewiesen

  • Diese Funktion wird über den Variablennamen aufgerufen

上述代码的输出结果是 -

Anonyme Funktion

Funktion mit mehreren Parametern

Funktionen in Erlang können null oder mehrere Parameter zur Definition verwenden. Funktionsüberladung ist ebenfalls möglich, eine Funktion mit dem gleichen Namen kann definiert werden, solange sie unterschiedliche Anzahl an Parametern haben. Im folgenden Beispiel sind die Definitionen der demo-Funktion mit mehreren Parametern angegeben.

示例代码

-module(helloworld). 
-export([add/2,add/3,start/0]). 
add(X,Y) -> 
   Z = X+Y, 
   io:fwrite("~w~n",[Z]). 
   
add(X,Y,Z) -> 
   A = X+Y+Z, 
   io:fwrite("~w~n",[A]). 
 
start() ->
   add(5,6) 
   add(5,6,6).

Im obigen Programm definieren wir zweimal die Funktion add. Die Definition der ersten add-Funktion verwendet zwei Parameter, die Definition der zweiten add-Funktion verwendet drei Parameter.

上述代码的输出结果是 -

11
17

Funktion verwendet Sequenz

In Erlang haben auch Funktionen die Fähigkeit, Schutzsequenzen zu haben. Dies ist nichts Besonderes, es ist nur ein Ausdruck, der nur ausgeführt wird, wenn er auf true ausgewertet wird.

Die Syntax für die Verwendung der Schutzsequenzfunktion ist wie im folgenden Programm gezeigt.

FunctionName(Pattern1… PatternN) [when GuardSeq1]->
Body;

在这里,

  • FunctionName − 函数名称是一个原子(唯一性)

  • Pattern1... PatternN − 每个参数都是一个模式。参数的个数N是函数的参数数量。函数名称由模块、函数名和定义的参数数量是唯一的。即,具有相同名称并在相同模块中的两个函数,但它们具有不同参数数量也算作两种不同的函数。

  • Body − 一个子句主体是由以逗号分隔的表达式序列组成 (,)

  • GuardSeq1 − 当函数被调用时它获取计算的表达式。

下面的程序是使用保护序列的函数的一个简单示例。

示例代码

-module(helloworld). 
-export([add/1,start/0]). 
add(X) when X>3 -> 
   io:fwrite("~w~n",[X]). 
start() -> 
   add(4).

上述代码的输出结果是 -

4

如果 add 函数被调用为 add(3),此程序将出现错误。