2016-08-05 26 views
1

Ich habe eine Funktion, die einige Logik ausführt und dann eine erfolgreiche Rückruffunktion oder eine fehlgeschlagene Rückruffunktion ausführt. HierWie übergeben Sie Argumente an einen Rückruf in Erlang?

ist der Code:

some_function() -> 
    ArgumentsForCallback = [], 
    check_some_condition(Input, fun success_callback/1, fun fail_callback/1). 

Wie gehe ich ArgumentsForCallback die Rückrufe?

+0

Können Sie bitte die Quelle von 'check_some_condition' posten? Ruft es die Callback-Funktionen mit 0 Argumenten auf? – Dogbert

+0

Sie haben Recht, Callback-Funktionen werden ohne Argumente aufgerufen, was ein falscher Weg zu sein scheint. Soll ich Argumente an "check_some_condition" übergeben und dann Callback-Funktionen von der Funktion 'check_some_condition' aus aufrufen? –

Antwort

8

Es gibt zwei Möglichkeiten:

  1. Führen Sie das Argument zu check_some_condition und stellen diese Funktion das Argument an die Rückrufe senden:

    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). 
    
  2. senden anonyme Funktionen check_some_condition:

    check_some_condition(Input, 
        fun() -> success_callback(ArgumentsForCallback) end, 
        fun() -> fail_callback(ArgumentsForCallback) end).