我知道Erlang支持匿名功能。我的问题是,我可以从函数返回一个函数,然后从外部调用返回的函数吗?如果是这样,我该怎么办?我知道这在很多语言中是可行的,比如C和Python。这是我试图做的,但它不起作用:
-module(test).
-export([run/0]).
test() ->
io:format("toasters", []).
bagel() ->
test.
run() ->
(bagel())().
结果:
Erlang/OTP 17 [erts-6.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Eshell V6.2 (abort with ^G)
1> c(test).
test.erl:4: Warning: function test/0 is unused
{ok,test}
2> test:run().
** exception error: bad function test
in function test:run/0 (test.erl, line 11)
3>
答案 0 :(得分:5)
啊,我们走了:
-module(test).
-export([run/0]).
test() ->
io:format("toasters", []).
bagel() ->
fun test/0. % <- This is what I needed to change.
run() ->
(bagel())().
我正在寻找here的答案,他们没有明确说明,但顶部附近的例子给了我刚才的提示。