在erlang模块中使用匿名函数时出现问题

dra*_*r40 2 erlang anonymous-function

当问题引起我的注意时,我正在使用erlang中的匿名函数.该功能定义如下

-module(qt). 
-export([ra/0]). 
ra = fun() -> 4 end. 
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用

-export(Ra/0]). 
Ra = fun() -> 4 end. 
Run Code Online (Sandbox Code Playgroud)

这也没有人能告诉我为什么erlang表现出这种行为?

leg*_*cia 5

Erlang模块不能导出变量,只能导出函数.

您可以通过导出一个零参数的函数来实现类似于导出变量的操作,该函数只返回一个值(匿名函数是一个有效的返回值):

-module(qt).
-export([ra/0]).
ra() ->
    fun() -> 4 end.
Run Code Online (Sandbox Code Playgroud)

现在你可以从shell中使用它了:

1> c(qt).
{ok,qt}
2> qt:ra().
#Fun<qt.0.111535607>
3> (qt:ra())().
4
Run Code Online (Sandbox Code Playgroud)