Как назначить функцию из модуля переменной в Erlang? - PullRequest
7 голосов
/ 02 января 2011

Я новичок в Эрланге. Если я сделаю это

H = fun(X) -> X*X.

Тогда все в порядке. Но если я перенесу эту функцию в модуль, появится надпись «Нелегальное выражение». Например, это

H = misc_functions:square.

Пожалуйста, помогите.

Ответы [ 2 ]

17 голосов
/ 02 января 2011

Для ссылок на функции Erlang требуется ключевое слово fun и arity.Предположим, что square принимает один параметр, правильное назначение:

H = fun misc_function:square/1
2 голосов
/ 02 января 2011

Вы также можете сделать что-то подобное:

1> F = fun(X) -> misc_function:square(X) end.
#Fun<erl_eval.6.13229925>
2> F(4).
16
3>

Определение функции, которая вызывает внутри желаемой функции.

...