Swift 协议继承
Swift protocol inheritance
我有 swift 代码:
protocol ParentProtocol {
// stuff
}
protocol ChildProtocol: ParentProtocol {
// additional stuff
}
protocol FooProtocol {
var variable: ParentProtocol? { get }
}
class Foo:FooProtocol {
var variable: ChildProtocol?
}
我遇到了编译器错误:
Type 'Foo' does not conform to protocol 'FooProtocol'
我知道,根据FooProtocol
,变量类型必须是ParentProtocol
类型。另一方面 ChildProtocol
继承自 ParentProtocol
,所以它也是一个 ParentProtocol
是否有任何解决方案以这种方式使用协议继承?
我找到了关联类型的解决方案 ()
在我的例子中是:
protocol FooProtocol {
associatedtype T = ParentProtocol
var variable:T? { get }
}
我有 swift 代码:
protocol ParentProtocol {
// stuff
}
protocol ChildProtocol: ParentProtocol {
// additional stuff
}
protocol FooProtocol {
var variable: ParentProtocol? { get }
}
class Foo:FooProtocol {
var variable: ChildProtocol?
}
我遇到了编译器错误:
Type 'Foo' does not conform to protocol 'FooProtocol'
我知道,根据FooProtocol
,变量类型必须是ParentProtocol
类型。另一方面 ChildProtocol
继承自 ParentProtocol
,所以它也是一个 ParentProtocol
是否有任何解决方案以这种方式使用协议继承?
我找到了关联类型的解决方案 ()
在我的例子中是:
protocol FooProtocol {
associatedtype T = ParentProtocol
var variable:T? { get }
}