cfi*_*her 7 compiler-errors protocols initialization swift
如果您尝试protocol在包含a的Swift中创建一个convenience initialiser,您将立即被编译器骂:
protocol Zizo{
convenience init(a:String, b:Int)
}
Run Code Online (Sandbox Code Playgroud)
非类型中不允许使用便捷初始值设定项.
这种限制有什么理由吗?这对我来说没有意义.
什么可能出错?
rin*_*aro 10
这是因为,没有任何意义.protocol只定义实现者具有所需的方法和属性.它没有定义实现细节.如果protocol需要init(a:String, b:Int),你可以实现它即被指定的便利初始化,只要你喜欢.
protocol Zizo{
init(a:String, b:Int)
}
class Foo:Zizo {
init() {
}
convenience required init(a:String, b:Int) {
self.init()
}
}
class Bar:Foo {
override convenience init() {
self.init(a:"baz", b:42)
}
required init(a:String, b:Int) {
super.init()
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,protocol强制init(a:String, b:Int)是required初始化器,但对"方便"或"指定"没有任何作用.
| 归档时间: |
|
| 查看次数: |
4188 次 |
| 最近记录: |