使用 Swift 2.0 中的新扩展协议可以通过以下示例进行:
protocol A {
func foo()
}
protocol B {
func foo()
}
extension A {
func foo() { print("A") }
}
extension B {
func foo() { print("B") }
}
class C: A, B {
}
类似于“多重继承”,某些语言(如 Python 和 C++)当然可以作为多重继承处理。真正让我吃惊的是 Xcode 7.0 Beta 4 给我的两个编译错误:
类型“C”不符合协议“A”
类型“C”不符合协议“B”
但是这个错误没有任何意义,因为错误必须反映协议之间存在冲突或歧义A
以及B
关于foo
函数的使用,或类似的东西。
如果您在上面的代码下方放置以下行:
C().foo()
这恰好启动了我所说的错误类型:
'foo' 的模糊使用
我的问题是:
随着 Swift 2.0 中新添加的扩展协议,Apple 是否考虑过对这种“多重继承”(类似于 C++ 处理方式)进行任何处理,还是根本不允许?