2

当一个问题引起我的注意时,我正在使用 erlang 中的匿名函数。函数定义如下

-module(qt). 
-export([ra/0]). 
ra = fun() -> 4 end. 

然而这不起作用

-export(Ra/0]). 
Ra = fun() -> 4 end. 

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

4

1 回答 1

5

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

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

-module(qt).
-export([ra/0]).
ra() ->
    fun() -> 4 end.

现在您可以从 shell 中使用它:

1> c(qt).
{ok,qt}
2> qt:ra().
#Fun<qt.0.111535607>
3> (qt:ra())().
4
于 2013-08-23T11:55:35.357 回答