<分区>
[首先,如果有人对问题有更好的名称,建议就会被很好地接受。到目前为止,我没有为这个问题找到更好的名称。]
所以,这就是问题。
假设我有一个协议(protocol) ProtocolA
、一个协议(protocol) ProtocolB
和一个协议(protocol) ProtocolX
定义如下:
protocol ProtocolA {
func doSomethingA()
}
protocol ProtocolB {
func doSomethingB()
}
protocol ProtocolX {
var handler: ProtocolA { get }
}
然后我在我的 ProtocolX 类中有一个正确的实现如下:
class Donald: ProtocolX {
...
var handler: ProtocolA { ... }
...
}
然后一切正常并且正确满足协议(protocol)要求。
但是
如果我这样实现:
class Donald: ProtocolX {
...
var handler: ProtocolA & ProtocolB
...
}
我有一个编译时问题,报告我的类 Donald
不符合 ProtocolX
(根据规范,要求 var handler
必须符合 ProtocolA
).
理论上 var handler
符合ProtocolA
(但它也符合ProtocolB
)。
那么我的问题是:为什么会出现编译时问题?我这边的 Swift 限制或概念问题?