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

Erlang-Fun

Fun wird verwendet, um anonyme Funktionen in Erlang zu definieren. Die allgemeine Syntax der anonymen Funktionen ist wie folgt:

Syntax

F = fun(Arg1, Arg2, ... ArgN) ->
   ...
Ende

Erklärung

  • F −Dies ist der Variablenname, der der anonymen Funktion zugewiesen wird.

  • Arg1, Arg2, ... ArgN −Diese sind die Parameter, die an die anonyme Funktion übergeben werden.

Das folgende Beispiel zeigt, wie man anonyme Funktionen verwendet.

Beispiel

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

Zu beachten ist bei diesem Programm Folgendes.

  • Die anonyme Funktion wird der Variable A zugewiesen.

  • Eine anonyme Funktion A() durch Variable.

Wenn wir den obigen Programmcode ausführen, erhalten wir die folgenden Ergebnisse.

"Hallo"

Ein weiteres Beispiel für eine anonyme Funktion, aber diesmal mit Parametern.

-> module(helloworld). 
-> export([start/> 0]). 
start() -> 
   A = fun(X) -> 
      io:fwrite("~p~n",[X]) 
      end, 
   A(5).

Wenn wir den obigen Programmcode ausführen, erhalten wir die folgenden Ergebnisse.

Ausgabe

5

Verwenden Sie Variablen

Anonyme Funktionen haben die Fähigkeit, auf Variablen zuzugreifen, die außerhalb des Bereichs der anonymen Funktion liegen. Lassen Sie uns ein Beispiel betrachten.-

Beispiel

-> module(helloworld). 
-> export([start/> 0]). 
start() -> 
   B == 6, 
   A = fun(X) -> 
      io:fwrite("~p~n",[X]), 
      io:fwrite("~p~n",[B]) 
      end, 
   A(5).

Zu beachten ist bei diesem Programm Folgendes.

  • Die Variable B liegt außerhalb des Bereichs der anonymen Funktion.

  • Anonyme Funktionen können auch Variablen zugänglich machen, die im globalen Bereich definiert sind.

Wenn wir den obigen Programmcode ausführen, erhalten wir die folgenden Ergebnisse.

Ausgabe

5
6

Funktion in einer Funktion

Eine der stärksten Aspekte der höheren Funktionen ist, dass Sie in einer Funktion eine andere Funktion definieren können. Lassen Sie uns ein Beispiel sehen, wie dies erreicht werden kann.

Beispiel

-> module(helloworld). 
-> export([start/> 0]). 
start() -> 
   Adder = fun(X) -> fun(Y) -> io:fwrite("~p~n",[X + Y]) end end, 
   A = Adder(6), 
   A(10).

Zu beachten ist bei diesem Programm Folgendes.

  • Der Adder ist eine höhere Funktion, die als fun(X) definiert ist.

  • Die Funktion für den Adder fun(X) ruft eine andere Funktion fun(Y) auf.

Wenn wir den obigen Programmcode ausführen, erhalten wir die folgenden Ergebnisse.

Ausgabe

16