1
我在努力理解爲什麼我在Swift中遇到特定的錯誤。在Swift中採用協議
具體來說,如果我有一個協議'X',它定義了一個必須採用另一個協議'A'的屬性。 如果我採納了另一類「Y」 X',但嘗試和申報所需的屬性爲實現一個類型,我得到了以下錯誤:
Type 'Y' does not conform to protocol 'X'
下面是一個例子:
protocol A {
}
class B : A {
var foo = "foo"
}
protocol X {
var someA : A {get set}
}
class Y : X { //Error: Type Y does not conform to protocol X
var someA = B()
}
如果我宣佈someA爲A如下:
var someA : A = B()
沒有錯誤,但後來我不得不投someA爲B訪問FOO。
我的問題是爲什麼我不能首先聲明someA爲B類?
你可以通過查看http://nomothetis.svbtle.com/type-variance-in-swift – Gavin
和這個博客https://mikeash.com/pyblog/找到更多關於它爲什麼會起作用的更多信息。週五-QA-2015年11月20日 - 協方差和contravariance.html – dispute