Шаблон, соответствующий карте внутри карты в заголовке функции - PullRequest
0 голосов
/ 25 февраля 2019

В настоящее время у меня есть экземпляр params, который выглядит следующим образом:

  params: %{
    "continent" => %{
      "deleted_date" => nil,
      "name" => "Asia",
      "to_be_deleted" => true
    },
    "id" => "16"
  },

Я пытаюсь сопоставить шаблон с ключом to_be_deleted, чтобы, если это правда, другая версия update/2запустить, а также присвоить содержимое continents для continent_params

Мой текущий update/2:

  def update(conn, %{"id" => id, "continent" => continent_params}) do
    # stuff         
  end

Моя попытка сопоставить шаблон с другой версией:

  def update(conn, %{"id" => id, %{"to_be_deleted" = true} => continent_params}) do
    #stuff
  end

Однако это выдает синтаксическое предупреждение относительно }, которое я не могу очистить.Я не уверен, что я пытаюсь сделать слишком много в заголовке функции или мне нужно использовать другой синтаксис для доступа к «карте внутри карты».

1 Ответ

0 голосов
/ 25 февраля 2019

Попробуйте следующим образом:

def update(conn, %{"id" => id, "continent" => %{"to_be_deleted" = true} = continent_params}) do
  #stuff                       ^
end

Вы забыли сопоставить шаблон с ключом "continent".

...