模式匹配功能标题中的地图中的地图

时间:2019-02-25 10:21:34

标签: elixir phoenix-framework

我目前有一个如下的params实例:

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

我正在尝试对to_be_deleted键进行模式匹配,以便如果为true,则将运行update/2的其他版本,同时还将continents的内容分配给{{ 1}}

我当前的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 :(得分:4)

尝试一下:

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

您忘记了按"continent"键进行图案匹配。