6

使用 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++ 处理方式)进行任何处理,还是根本不允许?

4

0 回答 0