swift - 通过 KeyPath / WritableKeyPath 快速初始化
问题描述
有没有办法通过 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 过程中被讨论或提出过?
解决方案
推荐阅读
- laravel - 如何在 Laravel 6 中按语言环境切换视图?
- javascript - 为什么我不能在我的 onclick 函数中添加计数?
- php - Laravel Eloquent ORM 过滤器与关系
- r - 在R中对数据框的列进行排序
- jenkins - 如何将参数从 Jenkins 传递到 Rundeck?
- html - 如何将活动的 CSS 类添加到菜单项?
- python - pyplot 捕捉 windows 10 关闭 windows 事件
- excel - 仅显示至少有一个指定颜色的单元格的列
- python - 投票分类器导致转换 Numpy 类型错误
- google-earth-engine - 如何在不丢失信息的情况下将图像转换为 uint8,将它们导出为 Google 地球引擎中的视频?