我有SWIFT代碼:斯威夫特協議繼承
import Foundation
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
類型。在另一方面,從ParentProtocol
ChildProtocol
繼承,所以它也是一個ParentProtocol
是否有任何解決方案中使用的協議基業呀?
@ShadowOf是的,謝謝。與相關類型的解決方案按預期工作:http://stackoverflow.com/a/38008288/824285 – somedev
相關:[我怎樣才能使一個函數與一個子類返回類型符合協議,其中一個超類定義爲返回類型?](http://stackoverflow.com/questions/35094967/swift-how-can-i-make-a-function-with-a-subclass-return-type-conform-to-a-protoc) – Hamish
也相關(metatypes的一致性和繼承性):[協議不符合自己?](http://stackoverflow.com/questions/33112559/protocol-doesnt-conform-to-it-自己),引用MartinR:s評論,_「即使使用'protocol P:Q {}','P'也不符合'Q'「_。 – dfri