在Swift Generics中强制超类

kho*_*ose 6 generics swift

我试图实现一个新方法来连接两个Array,返回一个Array包含公共数据类型到另外两个.

为了清楚起见,我希望有一种方法可以做一些事情(知道语法不正确......):

@infix func + <T,U,X where X super T, X super U>(left : Array<T>, right : Array<U>) 
-> Array<X>{
    //join both arrays
}
Run Code Online (Sandbox Code Playgroud)

始终认为编译器能够检测两个类的共同祖先类型.如果这实际上是不可能的,那么正确的方法是什么?使"超级"类型明确吗?

Rya*_*yan 0

您可以使用:如下语法:

// The parameter must be a UIViewController, or subclass
func changeViewColor<T: UIViewController>(vc: T) {
    vc.view.backgroundColor = UIColor.redColor()
}
Run Code Online (Sandbox Code Playgroud)