2016-07-29 115 views
1

我是Swift中的新手(來自Java)。當我試圖從另一個通用函數調用泛型函數時,我感到非常頭痛。更具體地說,我得到了標準的錯誤信息:「通用參數T無法推斷」。
我認爲我可能不知道一些語言細節,所以希望有人可以給我一個解決方案,即我怎樣才能糾正這個代碼,使其工作:Swift,在另一個通用函數中調用泛型函數

//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() 
} 

我已經花了相當多的時間在谷歌試圖找出解決方案,但沒有發現任何東西。我也試過用T.Type代替T?在參數中,但沒有運氣。我在xCode 7.3.1中使用了Swift 2.2.1。

+2

請問您能提供一個完整的例子嗎? – Sulthan

回答

0

對不起,我是個白癡。由於Sulthan的評論我期待實現我RequestExecutor的,我已經意識到,其執行對仿製藥的限制,即

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

在原來的職位的功能改變後

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

一切工作正常。
再次抱歉,我是專注於另一部分代碼的方式。感謝Sulthan讓我走上正軌。
希望這個答案對別人有幫助:)