如何在Swift中构建泛型类型协议一致性?

时间:2016-10-28 15:12:04

标签: swift generics swift2

来自真实世界代码的以下设计的Swift 2示例不会编译:

protocol SomeModelType {  }

protocol SomeProtocol {
    var someVar: SomeModelType? { get }
}

class ConcreteClass<T: SomeModelType>: SomeProtocol {
    var someVar: T?
}

这对我来说没有任何意义。我假设在ConcreteClass中因为T被约束为SomeModelType并且T作为someVar属性的支持类型,编译器将是能够确定SomeProtocol符合ConcreteClass

这样的例子应该如何构建? Swift编译器是否可以通过泛型类型约束确定协议一致性?

1 个答案:

答案 0 :(得分:0)

protocol SomeModelType {  }

protocol SomeProtocol {

    associatedtype T: Any
    var someVar: T? { get }
}

class ConcreteClass<T> :SomeProtocol where T: SomeModelType {

    var someVar: T?

}