3

整数パラメータNをに渡して、cake2の平方根のサイズNのリストを返そうとしています(例として)。例:bakery: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) ].

ただし、erlでコードをコンパイルするとc(bakery).、次のエラートレースが表示されます。

bakery.erl:4:  syntax error before: Foo
bakery.erl:7:  variable 'Foo' is unbound
error

私はまだ匿名関数と一般的なオブジェクト指向の世界に来るerlangに慣れています。どんな助けでもいただければ幸いです。

4

2 に答える 2

8

ここで説明するように、各Erlangモジュールは、一連の属性と関数宣言で構成され、それぞれがピリオド(。)で終了する必要があります。

しかし、この行:

Foo = fun(X) -> X * X end.

...どちらでもないため、代わりに次のように記述する必要があります。

foo(X) -> X * X.

fooこの行は関数宣言であるため、ここでは小文字です。ここで、関数名はアトムである必要があります。

したがって、最終的にモジュールは次のようになります。

-module(bakery).
-export([cake/1]).

foo(X) -> X * X.

cake(0) -> [];
cake(N) when N > 0 -> [ foo(2) | cake(N-1) ].
于 2012-10-04T01:26:48.453 に答える
2

前の解決策は正しいですが、このコードでも問題を解決できます。

-module(bakery).
-export([cake/1]).

cake(0) -> [];
cake(N) when N > 0 ->
   Foo = fun(X) -> X * X end,
   [ Foo(2) | cake(N-1) ].

よろしく。

于 2012-10-09T12:08:31.417 に答える