在此代码中:
protocol TestProtocol {
var someVar: String { get }
}
protocol WithTestProtocol {
var someVarWithTestProtocol: TestProtocol { get }
}
struct TestProtocolStruct: TestProtocol {
var someVar: String {
return ""
}
}
struct WithTestProtocolStruct: WithTestProtocol {
var someVarWithTestProtocol: TestProtocolStruct {
return TestProtocolStruct()
}
}
我收到错误消息:
Type 'WithTestProtocolStruct' does not conform to protocol 'WithTestProtocol'
为什么无法通过具体实现来遵守协议?有好的解决方法吗?
我知道,此代码有效:
struct WithTestProtocolStruct: WithTestProtocol {
var someVarWithTestProtocol: TestProtocol {
return TestProtocolStruct()
}
}
..但是我需要在此处使用具体的实现,因为我想使用具体实现的其他内容。我认为这是一个非常常见的情况,我想知道为什么编译器不允许这样做。
答案 0 :(得分:0)
您对协议类型的定义是<Button>
<StackPanel>
<Icons:PlayIcon IconBrush="Green" Width="28" Height="28" />
</StackPanel>
</Button>
TestProtocol
答案 1 :(得分:0)
使用协议属性时,您必须提供特定的类型。
struct WithTestProtocolStruct: WithTestProtocol {
var someVarWithTestProtocol: TestProtocol {
return TestProtocolStruct()
}
}
实际上TestProtocolStruct
可能会或可能不会确认TestProtocol
编译器不允许这样做。