本文介绍了在erlang模块中使用匿名函数时遇到麻烦的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我遇到一个问题引起了我的注意时,我正在与erlang的匿名功能进行工作。函数定义如下
-module(qt)。
-export([ra / 0])。
ra = fun() - > 4结束。
但这不起作用
-export(RA / 0])。
Ra = fun() - > 4结束。
这个
也不会有人告诉我为什么erlang展现这种行为?
解决方案
Erlang模块不能导出变量,只能使用函数。
您可以通过导出一个仅包含返回值的零参数的函数(匿名函数是有效的返回值)来实现类似导出变量的功能。
- 模(QT)。
-export([ra / 0])。
ra() - >
fun() - > 4结束。
现在您可以从shell使用它:
1> C(QT)。
{ok,qt}
2> QT:RA()。
#Fun< qt.0.111535607>
3> (QT:RA())()。
4
i was working with anonymous functionss in erlang when a problem caught my attention.the function is defined as follows
-module(qt).
-export([ra/0]).
ra = fun() -> 4 end.
this however does not work
-export(Ra/0]).
Ra = fun() -> 4 end.
and neither does thiscan anyone tell me why erlang exhibits this behaviour ?
解决方案
An Erlang module cannot export variables, only functions.
You can achieve something similar to exporting variables by exporting a function with zero arguments that simply returns a value (an anonymous function is a valid return value):
-module(qt).
-export([ra/0]).
ra() ->
fun() -> 4 end.
Now you can use it from the shell:
1> c(qt).
{ok,qt}
2> qt:ra().
#Fun<qt.0.111535607>
3> (qt:ra())().
4
这篇关于在erlang模块中使用匿名函数时遇到麻烦的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!