本文介绍了在 erlang 模块中使用匿名函数时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当一个问题引起我的注意时,我正在 erlang 中使用匿名函数.函数定义如下
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.
然而这不起作用
-export(Ra/0]).
Ra = fun() -> 4 end.
这也没有谁能告诉我为什么 erlang 表现出这种行为?
and neither does thiscan anyone tell me why erlang exhibits this behaviour ?
推荐答案
Erlang 模块不能导出变量,只能导出函数.
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.
现在您可以在 shell 中使用它了:
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 模块中使用匿名函数时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!