我试图传递一个整数参数N cake并返回2的平方大小N的列表(为了举例).例如面包店:cake(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) ].
Run Code Online (Sandbox Code Playgroud)
但是当我c(bakery).在erl中编译代码时,我得到以下错误跟踪:
bakery.erl:4: syntax error before: Foo
bakery.erl:7: variable 'Foo' is unbound
error
Run Code Online (Sandbox Code Playgroud)
我仍然习惯于匿名函数和erlang一般来说是一个面向对象的世界.任何帮助,将不胜感激.
每个二郎模块,如所描述这里,应包括属性和函数声明的序列,每个周期由终止的(.)
但这一行:
Foo = fun(X) -> X * X end.
Run Code Online (Sandbox Code Playgroud)
...既不是也不应该写成如下:
foo(X) -> X * X.
Run Code Online (Sandbox Code Playgroud)
foo这里是小写,因为这一行是一个函数声明,其中函数名应该是一个原子.
所以最后你的模块看起来像这样:
-module(bakery).
-export([cake/1]).
foo(X) -> X * X.
cake(0) -> [];
cake(N) when N > 0 -> [ foo(2) | cake(N-1) ].
Run Code Online (Sandbox Code Playgroud)