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表现出这种行为?
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)