ios - 是否有可能有一个能够排除具有初始值的属性的默认结构初始化程序?
问题描述
我有以下结构。
struct Checklist : Codable {
let id: Int64
var text: String?
var checked: Bool
var visible: Bool = false
var focused: Focused? = nil
var version: Int64 = 0
private enum CodingKeys: String, CodingKey {
case id
case text
case checked
}
}
我希望我可以通过使用来构建它
var checklist = Checklist(id: 1, text: nil, checked: true)
我注意到这会导致我编译器错误
在没有更多上下文的情况下,表达式的类型是模棱两可的
我需要通过显式提供初始化程序来解决这个问题。
struct Checklist : Codable {
let id: Int64
var text: String?
var checked: Bool
var visible: Bool = false
var focused: Focused? = nil
var version: Int64 = 0
private enum CodingKeys: String, CodingKey {
case id
case text
case checked
}
init(id: Int64, text: String?, checked: Bool) {
self.id = id
self.text = text
self.checked = checked
}
}
我想知道,是否有可能拥有一个自动默认初始化程序。它应该能够排除所有具有默认值的属性visible
(focused
和)?version
因此,我不需要明确提供初始化程序。(更少的代码,不需要维护我们自己的初始化器,更少可能的错误)
解决方案
推荐阅读
- javascript - chrome 扩展更改图标未按预期工作
- r - 计算时间序列的滚动相关性
- unity3d - 将调试附加到进程 Unity 不起作用
- python - 以下两段代码有什么区别:
- matlab - 将带有数字的单元格保存到文本文件
- android - 新产品风味使 Gradle 同步挂起
- python - 删除数独图像中的水平和垂直网格
- git - 无法使用来自 Git 组织的 Powershell 获取代码。获取必须进行身份验证才能访问此 API
- azure-functions - Azure Functions 无法加载库
- javascript - TS/Angular 对象返回后,数组长度始终为 0