English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Fun est utilisé pour définir des fonctions anonymes en Erlang. La grammaire générale des fonctions anonymes est la suivante :
F = fun (Arg1, Arg2, ... ArgN) -> ... Fin
Explication
F −C'est le nom de la variable assignée à la fonction anonyme.
Arg1, Arg2, ... ArgN −Ces sont les paramètres passés à la fonction anonyme.
Le prochain exemple montre comment utiliser les fonctions anonymes.
-module(helloworld). -export([start/ start() -> A = fun() -> io:fwrite("Hello") end, A().
Pour le programme ci-dessus, il convient de noter les points suivants.
La fonction anonyme est assignée à la variable A.
Fonction anonyme A() par le biais d'une variable.
Lorsque nous exécutons le programme ci-dessus, nous obtenons les résultats suivants.
"Hello"
Voici un autre exemple de fonction anonyme, mais cette fois, elle utilise des paramètres.
-module(helloworld). -export([start/ start() -> A = fun(X) -> io:fwrite("~p~n",[X]) end, A(5).
Lorsque nous exécutons le programme ci-dessus, nous obtenons les résultats suivants.
5
Les fonctions anonymes ont la capacité d'accéder aux variables au-delà de la portée de la fonction anonyme. Voyons un exemple.-
-module(helloworld). -export([start/ start() -> B == 6, A = fun(X) -> io:fwrite("~p~n",[X]), io:fwrite("~p~n",[B]) end, A(5).
Pour le programme ci-dessus, il convient de noter les points suivants.
La variable B est en dehors de la portée de la fonction anonyme.
Les fonctions anonymes peuvent toujours accéder aux variables définies dans le domaine global.
Lorsque nous exécutons le programme ci-dessus, nous obtenons les résultats suivants.
5 6
L'un des aspects les plus puissants de la fonction de haut niveau est que vous pouvez définir une fonction dans une fonction. Voici un exemple de comment réaliser cet objectif.
-module(helloworld). -export([start/ start() -> Adder = fun(X) -> fun(Y) -> io:fwrite("~p~n",[X + Y]) end end, A = Adder(6), A(10).
Pour le programme ci-dessus, il convient de noter les points suivants.
L'additionneur est une fonction de haut niveau définie par fun(X).
La fonction d'additionateur fun(X) appelle une autre fonction fun(Y).
Lorsque nous exécutons le programme ci-dessus, nous obtenons les résultats suivants.
16