รูปแบบที่ตรงกับแผนที่ภายในแผนที่ในส่วนหัวของฟังก์ชัน

ขณะนี้ฉันมีอินสแตนซ์ของพารามิเตอร์ที่มีลักษณะดังนี้:

  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

อย่างไรก็ตาม สิ่งนี้ทำให้เกิดคำเตือนทางไวยากรณ์เกี่ยวกับ } ที่ฉันไม่สามารถล้างได้ ฉันไม่แน่ใจว่าฉันพยายามทำมากเกินไปในส่วนหัวของฟังก์ชันหรือว่าฉันควรใช้ไวยากรณ์อื่นเพื่อเข้าถึง 'แผนที่ภายในแผนที่'


person Sorvah    schedule 25.02.2019    source แหล่งที่มา


คำตอบ (1)


ลองวิธีนี้:

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

คุณลืมจับคู่รูปแบบกับคีย์ "continent"

person vahid abdi    schedule 25.02.2019
comment
คุณถูกต้องอย่างแน่นอน ฉันยังต้องแก้ไขการพิมพ์ผิดของตัวเองสำหรับ %{"to_be_deleted" => true} ฉันไม่ตรงกับ "continent" เพราะในหัวของฉันฉันคิดว่า อย่าลองใช้ continent.to_be_deleted คุณไม่ได้เขียน JS! - person Sorvah; 25.02.2019