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

Erlang Fun

Fun è usato per definire funzioni anonime in Erlang. La sintassi generale delle funzioni anonime è la seguente:

Sintassi

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

Spiegazione

  • F −Questo è il nome della variabile assegnata alla funzione anonima.

  • Arg1, Arg2, ... ArgN −Questi sono i parametri passati alla funzione anonima.

Ecco un esempio di come utilizzare la funzione anonima.

实例

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

关于上述程序,需要注意以下几点。

  • La funzione anonima viene assegnata alla variabile A.

  • Funzione anonima A() tramite variabile.

当我们运行上面的程序时,我们将得到以下结果。

"Hello"

Ecco un altro esempio di funzione anonima, ma questa utilizza parametri.

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

当我们运行上面的程序时,我们将得到以下结果。

输出

5

Utilizzo delle variabili

Le funzioni anonime hanno la capacità di accedere a variabili al di fuori dell'ambito della funzione anonima. Vediamo un esempio-

实例

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

关于上述程序,需要注意以下几点。

  • 变量B在匿名函数的范围之外。

  • 匿名函数仍然可以访问在全局范围内定义的变量。

当我们运行上面的程序时,我们将得到以下结果。

输出

5
6

函数中的函数

高阶函数的另一个最强大的方面之一是,您可以在函数中定义一个函数。让我们来看一个如何实现此目标的示例。

实例

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

关于上述程序,需要注意以下几点。

  • 加法器是一个高阶函数,定义为fun(X)。

  • 加法器函数fun(X)引用了另一个函数fun(Y)。

当我们运行上面的程序时,我们将得到以下结果。

输出

16