Ich versuche eine Funktion an eine andere Funktion zu übergeben und lasse dann die übergebene Funktion ausführen, indem ich ihr eine Variable übergebe.
Hier ist mein Code:
%Vor%Der Fehler, den ich bekomme, ist in
%Vor%Der Fehler ist "Kann den Werttyp von 'String' nicht in den erwarteten Argumenttyp '()' konvertieren. Ich weiß, dass es eine Frage der Syntax ist - weiß einfach nicht, was es sein soll.
Robs Antwort ist korrekt, obwohl ich ein Beispiel für einen einfachen Callback / Completion-Handler geben möchte, können Sie ein Beispielprojekt unten herunterladen und mit der Eingabe getBoolValue
experimentieren.
Wichtig zu verstehen:
%Vor% Sie haben callback
deklariert, keine Argumente zu übernehmen, und dann versuchen Sie, ein Argument zu übergeben.
Sie haben den Typ (()->(String))?
angegeben. Dies ist eine optionale Funktion, die keine Argumente akzeptiert und ein String
zurückgibt.
Vielleicht möchten Sie ((String)->())?
angeben, was eine optionale Funktion ist, die ein String
übernimmt und nichts zurückgibt.
In den Parametern für showStandardPrompt
deklarieren Sie callback
mit dem Typ ()->(String)
. Dies ist eine Funktion, die keine Parameter akzeptiert und ein String
zurückgibt.
Sie nennen es dann mit field.text!
als Parameter, was offensichtlich mit dem vorher angegebenen Typ in Konflikt steht.
Sie müssen den für callback
angegebenen Typ korrigieren, um ein Argument String
zu übernehmen und nichts zurückzugeben: