让我们假设我们有
protocol xyz {
}
class A: xyz {
}
class B: xyz {
}
class C: xyz{
}
Run Code Online (Sandbox Code Playgroud)
仅当实例属于 A 或 B 类类型时才调用 xyz 的扩展
extension xyz where Self: A, B {
}
Run Code Online (Sandbox Code Playgroud)
答案是:你不能。
你可以通过做这样的事情来获得类似的结果
protocol XYZ { }
protocol AOrB: XYZ { }
class A: AOrB { }
class B: AOrB { }
class C: XYZ { }
extension XYZ where Self: AOrB {
func foo() { }
}
A().foo()
B().foo()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |