来自真实世界代码的以下设计的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编译器是否可以通过泛型类型约束确定协议一致性?
答案 0 :(得分:0)
protocol SomeModelType { }
protocol SomeProtocol {
associatedtype T: Any
var someVar: T? { get }
}
class ConcreteClass<T> :SomeProtocol where T: SomeModelType {
var someVar: T?
}