如何将参数传递给Erlang中的回调?

Ser*_*rov 1 erlang

我有一个函数,它执行一些逻辑然后运行成功回调函数或失败回调函数.

这是代码:

some_function() ->
    ArgumentsForCallback = [],
    check_some_condition(Input, fun success_callback/1, fun fail_callback/1).
Run Code Online (Sandbox Code Playgroud)

我如何传递ArgumentsForCallback给回调?

Dog*_*ert 7

有两种方法:

  1. 传递参数check_some_condition并使该函数将参数发送给回调:

    check_some_condition(Input, ArgumentsForCallback, Success, Fail) ->
        Success(ArgumentsForCallback).
    
    some_function() ->
        ArgumentsForCallback = [],
        check_some_condition(Input, ArgumentsForCallback, fun success_callback/1, fun fail_callback/1).
    
    Run Code Online (Sandbox Code Playgroud)
  2. 发送匿名函数到check_some_condition:

    check_some_condition(Input,
        fun() -> success_callback(ArgumentsForCallback) end,
        fun() -> fail_callback(ArgumentsForCallback) end).
    
    Run Code Online (Sandbox Code Playgroud)