在erlang模块中使用匿名函数时遇到麻烦 [英] trouble when using anonymous functions inside erlang modules

查看:220
本文介绍了在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 this can 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模块中使用匿名函数时遇到麻烦的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆