Erlang “二郎”;未绑定变量";调用函数时
我试图将一个整数参数N传递给Erlang “二郎”;未绑定变量";调用函数时,erlang,Erlang,我试图将一个整数参数N传递给cake,并返回一个大小为N的2平方的列表(为了示例)。e、 烘焙店:蛋糕(3)=>[4,4,4] 以下是我迄今为止所做的尝试: -module(bakery). -export([cake/1]). Foo = fun(X) -> X * X end. cake(0) -> []; cake(N) when N > 0 -> [ Foo(2) | cake(N-1) ]. 但是,当我在erl中编译代码c(bakery)。时,我得到以下错
cake
,并返回一个大小为N的2平方的列表(为了示例)。e、 烘焙店:蛋糕(3)=>[4,4,4]
以下是我迄今为止所做的尝试:
-module(bakery).
-export([cake/1]).
Foo = fun(X) -> X * X end.
cake(0) -> [];
cake(N) when N > 0 -> [ Foo(2) | cake(N-1) ].
但是,当我在erl中编译代码c(bakery)。
时,我得到以下错误跟踪:
bakery.erl:4: syntax error before: Foo
bakery.erl:7: variable 'Foo' is unbound
error
我仍然习惯于匿名函数和erlang,一般来说,这是一个面向对象的世界。如有任何帮助,我们将不胜感激。如前所述,每个Erlang模块应由一系列属性和函数声明组成,每个属性和函数声明以句点(.)结尾 但这句话:
Foo = fun(X) -> X * X end.
。。。两者都不是,应改为如下所示:
foo(X) -> X * X.
foo
在这里是小写的,因为这一行是a,其中函数名应该是a
因此,最终您的模块将如下所示:
-module(bakery).
-export([cake/1]).
foo(X) -> X * X.
cake(0) -> [];
cake(N) when N > 0 -> [ foo(2) | cake(N-1) ].
前面的解决方案是正确的,但您也可以使用以下代码解决问题:
-module(bakery).
-export([cake/1]).
cake(0) -> [];
cake(N) when N > 0 ->
Foo = fun(X) -> X * X end,
[ Foo(2) | cake(N-1) ].
问候