当我在 erlang 中使用匿名函数时,一个问题引起了我的注意。 该函数定义如下
-module(qt).
-export([ra/0]).
ra = fun() -> 4 end.
但这不起作用
-export(Ra/0]).
Ra = fun() -> 4 end.
这也不是 谁能告诉我为什么 erlang 表现出这种行为?
最佳答案
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
关于erlang - 在 erlang 模块中使用匿名函数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18401291/