当前位置:  开发笔记 > 编程语言 > 正文

Erlang中是否可以使用多个匿名函数?

如何解决《Erlang中是否可以使用多个匿名函数?》经验,为你挑选了1个好方法。

我处于这样一种情况,我只能创建分配给变量的匿名函数,如下所示:

Foo = fun(X) -> X end.

我知道如果你在一个模块中,你可以做这样的事情:

foo(X) -> X.
foo(X, Y) -> X + Y.
% i.e. foo(3) = 3, foo(3,4) = 7

我的问题是:这可以通过匿名函数实现吗?

一篇博文(我现在已经遗憾了)让我觉得你可以这样做:

Foo = fun(X) -> X;
         (X, Y) -> X + Y
      end.

但这不起作用,因为我遇到"头部不匹配"错误.



1> rvirding..:

简单而正确的答案是否定的,你做不到.当你这样做时,这实际上是非常符合逻辑的

foo(X) -> X.
foo(X, Y) -> X + Y.

你实际上是在创建两个函数:foo/1一个参数的函数; 并且foo/2,另一个函数,它有两个参数.他们一样foo.这直接映射到匿名函数(funs),因此您需要创建两个不同的函数,一个参数和两个参数中的另一个.

"头部不匹配"错误正在抱怨不同数量的参数.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有