Pola yang cocok dengan peta di dalam peta di header fungsi

Saat ini saya memiliki contoh params yang terlihat seperti ini:

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

Saya mencoba mencocokkan pola dengan kunci to_be_deleted sehingga jika benar, versi update/2 yang berbeda akan berjalan, sekaligus menugaskan konten continents ke continent_params

update/2 saya saat ini:

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

Upaya saya untuk mencocokkan pola dengan versi yang berbeda:

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

Namun ini menghasilkan peringatan sintaksis mengenai } yang tidak dapat saya hapus. Saya tidak yakin apakah saya mencoba melakukan terlalu banyak hal di header fungsi atau apakah saya harus menggunakan sintaks yang berbeda untuk mengakses 'peta di dalam peta'.


person Sorvah    schedule 25.02.2019    source sumber


Jawaban (1)


Cobalah cara ini:

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

Anda lupa mencocokkan pola dengan "continent" Kunci.

person vahid abdi    schedule 25.02.2019
comment
Anda benar sekali. Saya juga harus memperbaiki kesalahan ketik saya sendiri untuk %{"to_be_deleted" => true}. Saya tidak cocok dengan "continent" karena di kepala saya saya berpikir Jangan mencoba menggunakan benua.to_be_deleted, Anda tidak menulis JS! - person Sorvah; 25.02.2019