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++处理方式)的任何处理,或者根本不允许这样做?
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |