можно 🙂
Есть ли в эликсир экосистеме какие-то либки для описания селектов / трансформаций данных?
Ну типа таких: найти в мапе ключ :items в нем элемент с id = 1 и инкрементнуть в нем поле count.
Иными словами альтернативу https://github.com/redplanetlabs/specter/ ?
С ним на кложе подобная трансформация описывается как-то так:
(->>
{:items [{:id 2 :count 2}
{:id 1 :count 3}
{:id 1 :count 4}]}
(sp/transform [:items (sp/filterer #(= 1 (:id %))) sp/FIRST :count] inc))
=>
{:items [{:id 2, :count 2} {:id 1, :count 4} {:id 1, :count 4}]}
Ну или мб какая-то имплементация линз?
есть update_in/2,3
Есть моя имплементация линз github.com/hissssst/pathex . По моим бенчам - это самое эффективное что есть
.
original |> Map.update!(:items, fn items -> Enum.map(items, fn %{id: 1, count: x} = rec -> %{rec | count: x + 1} other -> other end) end)
Обсуждают сегодня