Swift中已自定义带参初始化的结构体如何实现无参初始化?
解决Swift结构体自定义带参构造器后无法无参数初始化的问题
Swift 结构体默认会自动生成无参数构造器和成员逐一构造器,但只要你自定义了任意构造器,系统就不会再自动提供这两个默认构造器,你需要手动新增无参数构造器,同时为属性设置合理的默认值即可实现需求:
struct ABC { var a: PQR var b: String // 保留原有带参构造器,不影响原有调用逻辑 init (a: PQR, b: String){ self.a = a self.b = b } // 手动新增无参数构造器 init() { self.a = PQR() // 替换为PQR类型对应的默认实例即可 self.b = "" } func xyz() { } }
修改完成后就可以直接按照你需要的方式调用:ABC().xyz()
注意事项
- 如果
PQR类型本身不支持无参数初始化,你需要先为PQR也添加无参数构造器,或者在ABC的无参数构造器中为a赋值一个已经创建好的PQR实例即可。 - 如果你不需要保留原有带参数初始化的方式,也可以直接给所有存储属性设置默认值,同时删除自定义的带参构造器,系统会自动生成可用的无参数构造器。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

