1

我注意到来自 FSharpX 的 PersistentVector 没有 remove at index 方法。

https://fsprojects.github.io/FSharpx.Collections/reference/fsharpx-collections-persistentvector-1.html

它可以修改第 n 个位置的项目,但不能删除它。这似乎是一个奇怪的遗漏。如果不可能,那么有人可以建议一个具有这种能力的不同的不可变持久集合。

我当前从向量中删除id处的项目的代码是蛮力

            state 
            |> Seq.indexed 
            |> Seq.where ( fun (_id,_)->id<>_id) 
            |> Seq.map (fun (_,p)->p) 
            |> PersistentVector.ofSeq

请注意,我正在尝试使用 PersistentVector 作为 UI 的后备存储。我正在试验https://github.com/JaggerJo/Avalonia.FuncUI,它是 Avalonia 的 Elmish 端口。我走了很远,然后想在一行上添加一个删除按钮,但我找不到更新我的后备存储的方法。:(

UI 的示例代码是

https://gist.github.com/bradphelan/77f3fcb8e660783790c5610290cd8d97

4

1 回答 1

0

我不认为 FSharpx.Collections 中的任何集合都支持删除,除了 PersistentHashMap,它有一个删除方法。我确定 FSharpx.Experimental.Collections 中有一些集合也支持删除/删除。这些可能对你没有用。

您可能想查看这个新项目以了解您正在尝试的内容https://github.com/fsprojects/FSharp.Data.Adaptive

于 2019-09-30T18:10:57.073 回答