2016-07-29 128 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让我走上正轨。
希望这个答案对别人有帮助:)