2016-05-02 9 views
3

Ich versuche, eine Funktion als Parameter in Swift zu übergeben. Um das zu tun, definierte ich meine Funktion, die einen Callback-Parameter wie nimmt:Wert des Typs '()' kann nicht in den erwarteten Argumenttyp konvertiert werden '() ->()'

func foo(callback:() ->() = { _ in }) { callback() } 

ich eine andere Funktion dann definieren, die ich verwende:

func toBeCalled() ->() { 
    print("hello world") 
} 

foo(toBeCalled()) 

ich die folgende Fehlermeldung erhalten:

Cannot convert value of type '()' to expected argument type '() ->()' 

Hat jemand dieses Problem schon einmal festgestellt? Ich habe mehrere Dinge versucht, einschließlich der Verwendung von Void.

Vielen Dank!

Antwort

3

Sie haben die Funktion, nicht das Ergebnis dieser Funktion zu übergeben:

foo(toBeCalled) 

toBeCalled() ->() hat geben, aber wenn man toBeCalled() schreiben, wird die Funktion ausgeführt und Sie erhalten den Rückgabetyp ().

+0

Danke! Ich hatte das früher versucht und hatte einen anderen Fehler, aber es funktionierte dieses Mal. – BLC

Verwandte Themen