Elixir - Peta
Daftar kata kunci adalah cara mudah untuk menangani konten yang disimpan dalam daftar dengan kunci, tetapi di bawahnya, Elixir masih berjalan melalui daftar. Itu mungkin cocok jika Anda memiliki rencana lain untuk daftar tersebut yang membutuhkan berjalan melalui semuanya, tetapi ini bisa menjadi overhead yang tidak perlu jika Anda berencana menggunakan kunci sebagai satu-satunya pendekatan Anda ke data.
Di sinilah peta datang untuk menyelamatkan Anda. Kapan pun Anda membutuhkan penyimpanan nilai kunci, peta adalah struktur data "tujuan" di Elixir.
Membuat Peta
Peta dibuat menggunakan sintaks% {} -
map = %{:a => 1, 2 => :b}
Dibandingkan dengan daftar kata kunci, kami sudah dapat melihat dua perbedaan -
- Peta mengizinkan nilai apa pun sebagai kunci.
- Kunci Maps tidak mengikuti urutan apa pun.
Mengakses kunci
Untuk mengakses nilai yang terkait dengan kunci, Maps menggunakan sintaks yang sama seperti daftar Kata Kunci -
map = %{:a => 1, 2 => :b}
IO.puts(map[:a])
IO.puts(map[2])
Ketika program di atas dijalankan, ini menghasilkan hasil sebagai berikut -
1
b
Memasukkan kunci
Untuk memasukkan kunci di peta, kami menggunakan Dict.put_new fungsi yang mengambil peta, kunci baru dan nilai baru sebagai argumen -
map = %{:a => 1, 2 => :b}
new_map = Dict.put_new(map, :new_val, "value")
IO.puts(new_map[:new_val])
Ini akan memasukkan pasangan nilai kunci :new_val - "value"di peta baru. Ketika program di atas dijalankan, ini menghasilkan hasil sebagai berikut -
"value"
Memperbarui Nilai
Untuk memperbarui nilai yang sudah ada di peta, Anda dapat menggunakan sintaks berikut -
map = %{:a => 1, 2 => :b}
new_map = %{ map | a: 25}
IO.puts(new_map[:a])
Ketika program di atas dijalankan, ini menghasilkan hasil sebagai berikut -
25
Pencocokan Pola
Berbeda dengan daftar kata kunci, peta sangat berguna dengan pencocokan pola. Saat peta digunakan dalam sebuah pola, peta akan selalu cocok dengan subset dari nilai yang diberikan -
%{:a => a} = %{:a => 1, 2 => :b}
IO.puts(a)
Program di atas menghasilkan hasil sebagai berikut -
1
Ini akan cocok a dengan 1. Dan karenanya, itu akan menghasilkan keluaran sebagai1.
Seperti yang ditunjukkan di atas, peta cocok selama kunci dalam pola ada di peta yang diberikan. Oleh karena itu, peta kosong cocok dengan semua peta.
Variabel dapat digunakan saat mengakses, mencocokkan dan menambahkan kunci peta -
n = 1
map = %{n => :one}
%{^n => :one} = %{1 => :one, 2 => :two, 3 => :three}
Modul Peta menyediakan API yang sangat mirip dengan modul Kata Kunci dengan fungsi praktis untuk memanipulasi peta. Anda dapat menggunakan fungsi sepertiMap.get, Map.delete, untuk memanipulasi peta.
Peta dengan kunci Atom
Peta hadir dengan beberapa properti menarik. Jika semua kunci di peta adalah atom, Anda dapat menggunakan sintaks kata kunci untuk kenyamanan -
map = %{:a => 1, 2 => :b}
IO.puts(map.a)
Properti menarik lainnya dari peta adalah bahwa mereka menyediakan sintaksnya sendiri untuk memperbarui dan mengakses kunci atom -
map = %{:a => 1, 2 => :b}
IO.puts(map.a)
Program di atas menghasilkan hasil sebagai berikut -
1
Perhatikan bahwa untuk mengakses kunci atom dengan cara ini, itu harus ada atau program akan gagal bekerja.