Elixir - แผนที่
รายการคำหลักเป็นวิธีที่สะดวกในการจัดการเนื้อหาที่จัดเก็บในรายการตามคีย์ แต่ภายใต้ Elixir ยังคงดำเนินการตามรายการ สิ่งนี้อาจเหมาะสมหากคุณมีแผนอื่น ๆ สำหรับรายการนั้นที่ต้องดำเนินการทั้งหมด แต่อาจเป็นค่าใช้จ่ายที่ไม่จำเป็นหากคุณวางแผนที่จะใช้คีย์เป็นแนวทางเดียวในการเข้าถึงข้อมูล
นี่คือจุดที่แผนที่ช่วยคุณได้ เมื่อใดก็ตามที่คุณต้องการที่เก็บคีย์ - ค่าแผนที่คือโครงสร้างข้อมูล“ ไปที่” ใน Elixir
การสร้างแผนที่
แผนที่ถูกสร้างขึ้นโดยใช้ไวยากรณ์% {} -
map = %{:a => 1, 2 => :b}
เมื่อเทียบกับรายการคำหลักเราจะเห็นความแตกต่างสองประการ -
- แผนที่อนุญาตให้มีค่าใด ๆ เป็นกุญแจสำคัญ
- คีย์ของแผนที่ไม่เป็นไปตามลำดับใด ๆ
การเข้าถึงคีย์
ในการรับค่าที่เชื่อมโยงกับคีย์ Maps จะใช้ไวยากรณ์เดียวกับรายการคำหลัก -
map = %{:a => 1, 2 => :b}
IO.puts(map[:a])
IO.puts(map[2])
เมื่อรันโปรแกรมข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ -
1
b
การใส่คีย์
ในการแทรกคีย์ในแผนที่เราใช้ไฟล์ Dict.put_new ฟังก์ชันที่ใช้แผนที่คีย์ใหม่และค่าใหม่เป็นอาร์กิวเมนต์ -
map = %{:a => 1, 2 => :b}
new_map = Dict.put_new(map, :new_val, "value")
IO.puts(new_map[:new_val])
สิ่งนี้จะแทรกคู่คีย์ - ค่า :new_val - "value"ในแผนที่ใหม่ เมื่อรันโปรแกรมข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ -
"value"
การอัปเดตค่า
ในการอัปเดตค่าที่มีอยู่แล้วในแผนที่คุณสามารถใช้ไวยากรณ์ต่อไปนี้ -
map = %{:a => 1, 2 => :b}
new_map = %{ map | a: 25}
IO.puts(new_map[:a])
เมื่อรันโปรแกรมข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ -
25
การจับคู่รูปแบบ
ในทางตรงกันข้ามกับรายการคำหลักแผนที่มีประโยชน์มากในการจับคู่รูปแบบ เมื่อใช้แผนที่ในรูปแบบแผนที่จะจับคู่กับชุดย่อยของค่าที่กำหนดเสมอ -
%{:a => a} = %{:a => 1, 2 => :b}
IO.puts(a)
โปรแกรมข้างต้นสร้างผลลัพธ์ต่อไปนี้ -
1
สิ่งนี้จะตรงกัน a ด้วย 1. และด้วยเหตุนี้มันจะสร้างผลลัพธ์เป็น1.
ดังที่แสดงไว้ด้านบนแผนที่จะจับคู่ตราบเท่าที่มีคีย์ในรูปแบบอยู่ในแผนที่ที่กำหนด ดังนั้นแผนที่ว่างจะตรงกับแผนที่ทั้งหมด
สามารถใช้ตัวแปรเมื่อเข้าถึงจับคู่และเพิ่มคีย์แผนที่ -
n = 1
map = %{n => :one}
%{^n => :one} = %{1 => :one, 2 => :two, 3 => :three}
โมดูลแผนที่มี API ที่คล้ายกันมากกับโมดูลคำหลักพร้อมฟังก์ชันอำนวยความสะดวกในการจัดการแผนที่ คุณสามารถใช้ฟังก์ชันต่างๆเช่นไฟล์Map.get, Map.deleteเพื่อจัดการแผนที่
แผนที่ด้วยปุ่ม Atom
แผนที่มาพร้อมกับคุณสมบัติที่น่าสนใจบางประการ เมื่อคีย์ทั้งหมดในแผนที่เป็นอะตอมคุณสามารถใช้ไวยากรณ์คำหลักเพื่อความสะดวก -
map = %{:a => 1, 2 => :b}
IO.puts(map.a)
คุณสมบัติที่น่าสนใจอีกประการหนึ่งของแผนที่คือมีไวยากรณ์ของตัวเองสำหรับการอัปเดตและเข้าถึงคีย์อะตอม -
map = %{:a => 1, 2 => :b}
IO.puts(map.a)
โปรแกรมข้างต้นสร้างผลลัพธ์ต่อไปนี้ -
1
โปรดทราบว่าในการเข้าถึงคีย์อะตอมด้วยวิธีนี้ควรมีอยู่มิฉะนั้นโปรแกรมจะไม่สามารถทำงานได้