Почему просходит чехарда с записями в структуре модуля Elixir?

По мотивам 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 записи переменных, затем одну пытаюсь удалить, но по факту запись не удалилась, а модульная структура сохранилась.
61dfeca466996044888513.png
Испробовал код модуля todo_crud.ex из книги Саши Юрича "Elixir в действии" - та же чехарда при удалении и добавлении записей. Идей ни каких.
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
@VAK_53 Автор вопроса
Я нашел ответ:
при команде удалить настройку delete_setting надо сохранять значение возвращаемой структуры model=, т.е. "гонять" переменную туда-сюда между оболочкой и модулем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы