2016-07-29 16 views
1

ich ziemlich Neuling in Swift (von Java kam). Ich hatte ziemlich viele Kopfschmerzen, während ich versuchte, generische Funktion von einer anderen generischen Funktion zu nennen. Genauer gesagt bekam ich die Standard Fehlermeldung: "Der generische Parameter T konnte nicht abgeleitet werden".
Ich gehe davon aus, dass ich nicht ein paar Sprache Details wissen, so hoffentlich jemand mir eine Lösung geben kann, das heißt, wie ich diesen Code korrigieren kann es funktioniert zu machen:Swift, ruft generische Funktion in einer anderen generischen Funktion

//Second parameter is workaround for error no generic parameter in function signature  
func performRequest<T>(request: Request, stub: T?) -> Int { 
    let result: T? = requestExecutor.execute(request) 
    return request.getId() 
} 

ich schon ziemlich viel ausgegeben haben Zeit in Googling zu versuchen, eine Lösung zu finden, aber nichts gefunden. Ich habe auch versucht, T.Type anstelle von T zu verwenden? in Parametern, aber ohne Glück. Ich benutze Swift 2.2.1 in xCode 7.3.1.

+2

Könnten Sie ein komplettes Beispiel geben Sie bitte? – Sulthan

Antwort

0

Sorry, ich bin ein Idiot. Dank Kommentar von Sulthan sehe ich auf Verwirklichung meiner RequestExecutor und ich habe erkennen, dass seine auszuführen haben Einschränkung für Generika, dh

func execute<T: Mappable>(request: Request) ... 

Nach Änderung der Funktion in meinem ursprünglichen Beitrag zu

func performRequest<T: Mappable>(request: Request, stub: T?) -> Int... 

Alles funktioniert gut.
Leider wieder einmal war ich Art und Weise auf einem anderen Teil des Codes konzentriert. Danke an Sulthan, dass er mich auf den richtigen Weg gebracht hat.
Hoffentlich diese Antwort wird für jemand anderen nützlich sein :)

Verwandte Themen