swift - 类的快速协议扩展链接初始化
问题描述
如果我将以下结构更改为类,如何初始化:-
protocol P {
init()
init(str: String)
}
extension P {
init() {
self.init(str: "some default")
}
}
struct S : P {
var str: String
}
let s = S()
print(s.str) // prints - some default
我尝试添加默认的成员初始化器(更改为类之后):-
class S : P {
var str: String
init() {
self.init(str: String)
}
}
它显示错误:-错误:类型'S'不符合协议'P'类S:P。还有其他错误。如果我将 struct 更改为 class ,如何完成初始化?
解决方案
只需要指定required
非最终类。
如果您了解这些概念可能会有所帮助,Swift 文档会有所帮助。
代码:
class S : P {
required init() {}
required init(str: String) {}
}
推荐阅读
- json - 如何在flutter中解析json列表
- c++ - 如何编译/构建/链接 - XLNT 库?
- asp.net-mvc - 带有 IdentityServer4 的 ASP.NET MVC 5:登录 url 和访问被拒绝
- scala - 如何通过迭代scala中的列表来添加转换后的对象进行设置
- swift - 我应该使用哪个路径上传到 Dropbox 中的团队文件夹
- javascript - VueJS将参数传递给弹出“对话框”
- javascript - 如何在 React JS 组件中预加载图像?
- amazon-web-services - 在哪里可以找到 Lambda@Edge 的日志?
- javascript - 使用带有 OpenStreetMaps 的 Leaflet 来勾勒建筑物
- c - make 失败,链接器抱怨重复符号