问题标签 [keypaths]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
99 浏览

swift - 如何使 NSSortDescriptor 的 KeyPath 通用?

我是编程的初学者,所以如果可能的话,我会很感激初学者级别的解释。

我正在上 Paul Hudson 的 100 天 SwiftUI 课程,我们应该为泛型设置keyPath参数。NSSortDescriptor这是一个自定义视图的内部,可以在另一个视图中使用它来构建一个带有核心数据获取请求的列表。我希望这是有道理的。我不知道如何制作keyPath通用的,这样当我在另一个视图中使用它时,我可以传入我想要的任何 keypath。

我尝试添加泛型类型V并使其符合Comparable但当我尝试在另一个视图中使用它时,我收到以下错误:无法推断通用参数“V”。

这是视图的使用方式ContentView

这是Singer实体

非常感谢任何帮助。

0 投票
0 回答
86 浏览

swift - 通过 KeyPath / WritableKeyPath 快速初始化

有没有办法通过 Key Path 设置属性来初始化 Swift 类型?

尝试通过密钥路径初始化失败并出现以下错误:

'self' 在所有存储属性初始化之前使用
从初始化程序返回而不初始化所有存储属性

如果该属性使用let而不是var,则会给出错误:

无法通过下标赋值:关键路径是只读的

通过键路径设置属性init似乎不起作用。为什么不?有什么解决方法吗?

这个问题是否在开源 Swift Evolution 过程中被讨论或提出过?

0 投票
0 回答
21 浏览

python - 如何将 JSON 密钥路径转换为正确的 JSON?

当我将当前的 python parquet 文件转换为 JSON 时,它为我提供了关键路径,而不是将它们分解出来。如何将密钥转换为嵌套 JSON?

我目前得到:

相反,我想要:

0 投票
0 回答
18 浏览

vue.js - 将 mapWritableState() 与 v-model 一起用于嵌套属性

在使用 pinia 的实验性待办事项列表应用程序中,我有一个商店状态,focusTaskId其中taskById包含任何本地缓存的项目,由它们的 id 存储。

鉴于 v-model 未存储在存储的顶级键中,如何对缓存的任务之一使用 v-model?

当一个项目成为焦点时,我想使用 v-model 将表单绑定到存储在 store 中 taskById 下的相应任务。为此,它必须是表单组件中的本地别名可写属性。

不幸的是,为可写存储属性设置别名,mapWritableState只接受来自存储的顶级键,例如["focusTaskId"]or ["taskById"],并且不能接受通用路径表达式,例如 [ taskById['${id}']]

是否有一种解决方法,以便我可以通过 v-model 将我的表单动态绑定到taskById当前关注的任何对象,即使它“向下两层”?

我来自 React 和我的 lauf 存储,我可以为 taskById 对象分区存储,并使用“id”作为(新)顶级键从那里绑定。也许有一个等效的方法可以从 pinia 中另一个商店的子对象派生一个商店,然后我可以在顶层绑定那个新商店?

0 投票
1 回答
22 浏览

kotlin - 链接属性引用并保持读写能力

使用 aKMutableProperty1访问类属性既可以用作 getter,也可以用作 setter。

为了能够访问嵌套属性,例如

我试图向上链kMutableProperty1两个

这样,可以读取内部属性,但不能设置:

在 Swift 中,可以使用 KeyPaths 实现类似的功能

我如何在 Kotlin 中做同样的事情 - 链接属性访问器并保持读写能力?