繁体   English   中英

无法推断出通用参数

[英]Generic parameter could not be inferred

我在类上有一个方法,我使用UIViewController类型的泛型并符合协议。 然而,当我从另一个类调用这个公共方法时,我收到“无法推断通用参数”。 不知道为什么我已经告诉该方法泛型类型。

public func mapBlocks<T: UIViewController where T: MyProtocol>(mapper:(name: String, obj: T ) -> ()) {
   // do something
}

当我尝试从另一个类调用该方法时,会发生错误...

MyClass.mapBlocks { (name, obj) -> () in 
   // do something
}

我知道这个问题很老了,我真的希望你在过去的一年半里解决了这个问题。 ;-)但对于每个再次遇到这个问题的人来说,这里是解决方案。

您需要通过在调用方法时显式定义闭包参数的类型,将T的类型传递给泛型方法。 这是Swift3示例:

protocol MyProtocol {
}

class MyClass: UIViewController, MyProtocol {
}

func mapBlocks<T: UIViewController>(mapper: @escaping (String, T) -> ()) where T: MyProtocol {
}

mapBlocks { (name: String, obj: MyClass) in
}

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM