使用扩展协议在Swift 2.0中进行多协议继承

Vic*_*ler 6 inheritance ios swift swift2 protocol-extension

在这个例子中使用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 {

}
Run Code Online (Sandbox Code Playgroud)

就像" 多重继承 "一样,Python和C++等语言当然可以作为多重继承来处理.让我感到惊讶的是Xcode 7.0 Beta 4给我的两个编译错误:

类型'C'不符合协议'A'


类型'C'不符合协议'B'

但是这个错误没有任何意义,因为错误必须反映协议之间存在的冲突或歧义A以及B关于foo函数的使用或类似的东西.

如果您在上面的代码下面添加以下行:

C().foo()
Run Code Online (Sandbox Code Playgroud)

这启动了我所说的错误类型:

模糊地使用'foo'

我的问题是:

随着Swift 2.0中新增的扩展协议,Apple考虑了对这种" 多重继承 "(类似于C++处理方式)的任何处理,或者根本不允许这样做?