English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Fun se utiliza para definir funciones anónimas en Erlang. La sintaxis general de la función anónima es la siguiente:
F = fun(Arg1, Arg2, ... ArgN) -> ... Fin
Descripción
F −Este es el nombre de la variable asignada a la función anónima.
Arg1, Arg2, ... ArgN −Estos son los parámetros pasados a la función anónima.
El siguiente ejemplo muestra cómo se utiliza la función anónima.
-> module(helloworld). -> export([start/> 0]). start() -> A = fun() -> io:fwrite("Hello") end, A().
Sobre el programa anterior, hay algunos puntos que deben tenerse en cuenta.
La función anónima se asigna a la variable A.
Función anónima A() mediante variables.
Cuando ejecutamos el programa anterior, obtendremos los siguientes resultados.
"Hello"
Otro ejemplo de función anónima, pero esta vez utilizando parámetros.
-> module(helloworld). -> export([start/> 0]). start() -> A = fun(X) -> io:fwrite("~p~n",[X]) end, A(5).
Cuando ejecutamos el programa anterior, obtendremos los siguientes resultados.
5
Las funciones anónimas tienen la capacidad de acceder a variables fuera del ámbito de la función anónima. Veamos un ejemplo.-
-> module(helloworld). -> export([start/> 0]). start() -> B == 6, A = fun(X) -> io:fwrite("~p~n",[X]), io:fwrite("~p~n",[B]) end, A(5).
Sobre el programa anterior, hay algunos puntos que deben tenerse en cuenta.
La variable B está fuera del ámbito de la función anónima.
Las funciones anónimas pueden acceder a variables definidas en el ámbito global.
Cuando ejecutamos el programa anterior, obtendremos los siguientes resultados.
5 6
Una de las características más poderosas de los funciones de orden superior es que puedes definir una función dentro de una función. Vamos a ver un ejemplo de cómo lograr esto.
-> module(helloworld). -> export([start/> 0]). start() -> Adder = fun(X) -> fun(Y) -> io:fwrite("~p~n",[X + Y]) end end, A = Adder(6), A(10).
Sobre el programa anterior, hay algunos puntos que deben tenerse en cuenta.
El sumador es una función de orden superior, definida como fun(X).
La función de sumador fun(X) hace referencia a otra función fun(Y).
Cuando ejecutamos el programa anterior, obtendremos los siguientes resultados.
16