【发布时间】:2021-03-12 16:13:22
【问题描述】:
在阅读有关异常的 swift 论坛时,我发现了一个有趣的问题。关于异常的示例之一是这样的:
protocol Base {
func foo() throws -> Int
}
protocol Refined: Base {
func foo() -> Int
}
struct Test: Refined {
func foo() -> Int {
0
}
}
这很有趣,我认为它无法编译是错字,但它确实可以。我不确定这在幕后是如何工作的。我的意思是当协议采用另一个协议时,它也采用它的要求。但在这种情况下,以某种方式声明没有抛出的相同方法也满足第一个协议Base。
至少我预计Test 需要有两个foo 的实现。我在这里错过了什么?
【问题讨论】:
标签: swift swift-protocols