有没有办法通过 Key Path 设置属性来初始化 Swift 类型?
struct SomeStruct {
var number: Int
init(to number: Int) {
self.number = number // ok
}
init(viaKeyPathTo number: Int) {
self[keyPath: \.number] = number // error
}
}
尝试通过密钥路径初始化失败并出现以下错误:
'self' 在所有存储属性初始化之前使用
从初始化程序返回而不初始化所有存储属性
如果该属性使用let
而不是var
,则会给出错误:
无法通过下标赋值:关键路径是只读的
通过键路径设置属性init
似乎不起作用。为什么不?有什么解决方法吗?
这个问题是否在开源 Swift Evolution 过程中被讨论或提出过?