swift3.1之后使用范型函数
类似
private
func getData<T>(a: T) {
}
self.getData<A>(a)
会出现上述错误:不知道泛型的类型
解决方案:
让xcode推断出范型的类型
Typically there are many ways to define generic functions. But they are based on condition that T
must be used as a parameter
, or as a return type
extension UIViewController {
class func doSomething<T: UIView>() -> T {
return T()
}
class func doSomethingElse<T: UIView>(value: T) {
// Note: value is a instance of T
}
class func doLastThing<T: UIView>(value: T.Type) {
// Note: value is a MetaType of T
}
}
let result = UIViewController.doSomething() as UIImageView // Define `T` by casting, as UIImageView
let result: UILabel = UIViewController.doSomething() // Define `T` with property type, as UILabel
UIViewController.doSomethingElse(value: UIButton()) // Define `T` with parameter type, as UIButton
UIViewController.doLastThing(value: UITextView.self) // Define `T` with parameter type, as UITextView