2
当我遇到问题时,我正在使用erlang中的匿名函数。 功能定义如下在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.
然而,这并不正常工作
-export(Ra/0]).
Ra = fun() -> 4 end.
而且也不该 谁能告诉我,为什么二郎就存在这种行为?
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认为这是赋值给一个变量而不是一个函数,因此拒绝导出它? – draklor40
@ draklor40拒绝编译,甚至。在Erlang模块中,变量赋值只能出现在函数中。 – legoscia