Как удалить элемент из индекса N с помощью PersistentVector в FSharpx? - PullRequest
1 голос
/ 29 сентября 2019

Я заметил, что у PersistentVector из FSharpX нет метода удаления по индексу.

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 в качестве резервного хранилища для пользовательского интерфейса. Я экспериментирую с https://github.com/JaggerJo/Avalonia.FuncUI, который является портом Эльмы для Авалонии. Я получил довольно далеко, а затем хотел добавить кнопку удаления в строке, и я не могу найти способ обновить свой резервный магазин. : (

Пример кода для пользовательского интерфейса:

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

1 Ответ

0 голосов
/ 30 сентября 2019

Я не думаю, что какая-либо из коллекций в FSharpx.Collections поддерживает удаление, кроме PersistentHashMap, который имеет метод удаления. Я уверен, что в FSharpx.Experimental.Collections есть некоторые коллекции, которые также поддерживают удаление / удаление. Это может быть бесполезно для вас.

Возможно, вы захотите посмотреть на этот новый проект, чтобы попытаться https://github.com/fsprojects/FSharp.Data.Adaptive

...