调用一个函数,该函数是另一个函数调用的结果

时间:2016-11-28 16:37:07

标签: function lambda erlang

我有一个函数,它接受两个参数并返回一个带有arity 1的函数:

make_fun(A, B) -> 
    fun(C) -> 
        A + B + C
    end.

我使用上面的函数创建一个函数,然后将它应用于这样的参数:

Fun = make_fun(1,2),
Result = Fun(3).

在此之后Result = 6

问题是:如果不将函数存储在Fun中,有没有办法做同样的事情?

这样的事情是理想的,但似乎不起作用:

Result = make_fun(1,2)(3).

2 个答案:

答案 0 :(得分:3)

make_fun(A, B) ->
      fun(C) ->
          A + B + C
      end.

只需将make_fun括在括号中:

(make_fun(1, 2))(3).

答案 1 :(得分:-2)

这个怎么样?

Result = Fun(make_fun(1,2))。