Ich versuche eine Funktion zu schreiben, die jede Funktion als Parameter annehmen und in Swift ausführen kann. Ich habe diesen Ansatz versucht:Wie übergibt man eine Funktion als Parameter und führt sie in Swift aus?
public func anyFunc<P, T> (_ function: (P...) -> T) {
_ = function()
}
und versuchen es dann mit:
anyFunc(print("hello"))
Dies erzeugt ERROR: 'print' produces '()', not the expected contextual result type '(_...) -> _'
Wie kann ich dies erreichen (und ist es möglich)?
Warum verwenden Sie ''
? Sollte die bestandene Funktion ungültig werden? –
'print (" hallo ")' ist _ ein Aufruf_ an die Funktion 'print', die ein Ergebnis liefert (das leere Tupel,'() '). Daher ist Ihr Aufruf von 'anyFunc' gleichbedeutend mit' anyFunc (()) ', was natürlich eine Diskrepanz für die Argumente von' anyFunc' ist. – dfri
Wie erwartet man normalerweise 'function()', ohne irgendwelche Argumente zu übergeben, wenn eine beliebige Anzahl von Argumenten benötigt wird? – jtbandes