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