English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Fun используется для определения анонимных функций в Erlang. Общий синтаксис анонимных функций следующий:
F = fun(Arg1, Arg2, ... ArgN) -> ... Конец
Описание
F −Это имена переменных, назначенные анонимной функции.
Arg1, Arg2, ... ArgN −Эти являются параметрами, передаваемыми анонимной функции.
Ниже приведен пример того, как использовать анонимные функции.
-module(helloworld). -export([start/0]). start() -> A = fun() -> io:fwrite("Hello") end, A().
Обратим внимание на следующие моменты в отношении вышеуказанной программы.
Анонимная функция назначается переменной A.
Анонимная функция через переменную A().
Когда мы запустим上面的 программу, мы получим следующие результаты.
"Hello"
Другой пример анонимной функции, но в этом случае с использованием параметров.
-module(helloworld). -export([start/0]). start() -> A = fun(X) -> io:fwrite("~p~n",[X]) end, A(5).
Когда мы запустим上面的 программу, мы получим следующие результаты.
5
Анонимные функции имеют возможность доступа к переменным за пределами области видимости анонимной функции. Давайте посмотрим на пример-
-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