评论由:alexmiller 制作
我们必须考虑向量或关联数据结构,而不仅仅是映射。我还不想使用标志,而是应该允许一次删除多个。
类似于
(update-in [{:foo 1}] [0] dissoc :foo)
我们将只剩下 {{[{}股价}} 所以现有的这种方式会留下空集合。
我还查看了一些现有的 dissoc-in 实现 - core.incubator,taoensso.encore,clj-http,medley,useful,plumbing 等。大多数使用单个键路径和留下空集合 - 这些似乎大多源自孵化器版本。Encore 版本通过将键路径与最终要 dissoc 的最终叶键分开来处理多个路径(变长)。Medley、useful 和 plumbing 的版本仅限于映射( ст.remove 空映射)。
我无法想像我们会在核心(因为所有其他-in 函数都是通用的)中创建特定于映射的版本,因此我得出结论,我们将需要一个可以留下空集合的 dissoc-in。考虑到这个,我不确定 dissoc-in 是否提供了比 update-in + dissoc 更多的价值,以至于值得在此阶段添加到核心中,尤其是考虑到它已经存在于各种实用库中(许多情况下语义不同)。这样,我们可能会破坏(或至少是不方便)许多现有的 dissoc-in 实现的用户。我打算对此开放评论,但我倾向于在此阶段拒绝此增强。