首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >这个匿名函数语法是怎么回事?

这个匿名函数语法是怎么回事?
EN

Stack Overflow用户
提问于 2014-04-29 15:03:54
回答 1查看 6.2K关注 0票数 16

刚刚开始我的长生不老之旅。在书中读到这一点:

“&运算符将后面的表达式转换为函数。”

好的,我想我明白了.

代码语言:javascript
复制
iex(70)> f = &(&1 * &2)
#Function<12.80484245 in :erl_eval.expr/5>
iex(72)> f.(2,3)
6

好的,&符号是匿名函数及其参数的简写。但是,为什么下一个调用不起作用呢?!

代码语言:javascript
复制
iex(73)> &(&1 * &2).() 
#Function<12.80484245 in :erl_eval.expr/5>

...and我可以一直这样做下去:

代码语言:javascript
复制
iex(76)> &(&1 * &2).().().()
#Function<12.80484245 in :erl_eval.expr/5>

这里发生什么事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-29 15:33:27

如果您将匿名函数用圆括号括起来,它将会工作:

代码语言:javascript
复制
iex(1)> (&(&1 * &2)).()
** (BadArityError) &:erlang.*/2 with arity 2 called with no arguments

这个错误是意料之中的,因为我们正在调用一个零参数的二元数乐趣。如果我们传递两个数字,我们应该看到它们相乘:

代码语言:javascript
复制
iex(2)> (&(&1 * &2)).(2,3)
6
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23357748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档