По мотивам TodoList от Саши Юрича написал модуль с моделью настройки Modbus (slave, reg_address, type) с ключами названий переменных. Коды:
defmodule SlaveRegModel do
defstruct vars: %{}
def new(), do: %SlaveRegModel{}
def add_setting(slave_reg_model, var_name, atr) do
new_vars = Map.put(
slave_reg_model.vars,
var_name,
atr
)
%SlaveRegModel{slave_reg_model |
vars: new_vars
}
end
def setting?(slave_reg_model, var_name) do
list = slave_reg_model.vars
|> Stream.filter(fn {name, _} -> name == var_name end)
|> Enum.map(fn {_, atr} -> atr end)
hd(list)
end
def all(slave_reg_model) do
slave_reg_model.vars
end
def delete_setting(slave_reg_model, var_name) do
new_vars = Map.delete(slave_reg_model.vars, var_name)
%SlaveRegModel{slave_reg_model |
vars: new_vars}
end
end
На терминале видно, что я создаю 3 записи переменных, затем одну пытаюсь удалить, но по факту запись не удалилась, а модульная структура сохранилась.
Испробовал код модуля todo_crud.ex из книги Саши Юрича "Elixir в действии" - та же чехарда при удалении и добавлении записей. Идей ни каких.