Elixir - Daftar kata kunci
Sejauh ini, kami belum membahas struktur data asosiatif apa pun, yaitu struktur data yang dapat mengaitkan nilai tertentu (atau beberapa nilai) ke sebuah kunci. Bahasa yang berbeda menyebut fitur ini dengan nama yang berbeda seperti kamus, hash, array asosiatif, dll.
Di Elixir, kami memiliki dua struktur data asosiatif utama: daftar kata kunci dan peta. Dalam bab ini, kita akan fokus pada daftar Kata Kunci.
Dalam banyak bahasa pemrograman fungsional, adalah umum untuk menggunakan daftar tupel 2-item sebagai representasi dari struktur data asosiatif. Di Elixir, ketika kita memiliki daftar tupel dan item pertama dari tupel (yaitu kunci) adalah atom, kita menyebutnya daftar kata kunci. Pertimbangkan contoh berikut untuk memahami hal yang sama -
list = [{:a, 1}, {:b, 2}]
Elixir mendukung sintaks khusus untuk menentukan daftar tersebut. Kita dapat menempatkan titik dua di akhir setiap atom dan menyingkirkan tupel seluruhnya. Sebagai contoh,
list_1 = [{:a, 1}, {:b, 2}]
list_2 = [a: 1, b: 2]
IO.puts(list_1 == list_2)
Program di atas akan menghasilkan hasil sebagai berikut -
true
Keduanya mewakili daftar kata kunci. Karena daftar kata kunci juga merupakan daftar, kami dapat menggunakan semua operasi yang kami gunakan pada daftar di dalamnya.
Untuk mengambil nilai yang terkait dengan atom dalam daftar kata kunci, berikan atom sebagai [] setelah nama daftar -
list = [a: 1, b: 2]
IO.puts(list[:a])
Program di atas menghasilkan hasil sebagai berikut -
1
Daftar kata kunci memiliki tiga karakteristik khusus -
- Kunci harus berupa atom.
- Kunci diurutkan, seperti yang ditentukan oleh pengembang.
- Kunci bisa diberikan lebih dari satu kali.
Untuk memanipulasi daftar kata kunci, Elixir menyediakan modul Kata Kunci . Namun, ingatlah, daftar kata kunci hanyalah daftar, dan dengan demikian daftar tersebut memberikan karakteristik kinerja linier yang sama seperti daftar. Semakin panjang daftarnya, semakin lama waktu yang dibutuhkan untuk menemukan kunci, menghitung jumlah item, dan seterusnya. Karena alasan ini, daftar kata kunci digunakan di Elixir terutama sebagai opsi. Jika Anda perlu menyimpan banyak item atau menjamin satu kunci terkait dengan satu nilai maksimum, Anda harus menggunakan peta sebagai gantinya.
Mengakses kunci
Untuk mengakses nilai yang terkait dengan kunci tertentu, kami menggunakan Keyword.getfungsi. Ini mengembalikan nilai pertama yang terkait dengan kunci yang diberikan. Untuk mendapatkan semua nilai, kami menggunakan fungsi Keyword.get_values. Misalnya -
kl = [a: 1, a: 2, b: 3]
IO.puts(Keyword.get(kl, :a))
IO.puts(Keyword.get_values(kl))
Program di atas akan menghasilkan hasil sebagai berikut -
1
[1, 2]
Memasukkan kunci
Untuk menambahkan nilai baru, gunakan Keyword.put_new. Jika kunci sudah ada, nilainya tetap tidak berubah -
kl = [a: 1, a: 2, b: 3]
kl_new = Keyword.put_new(kl, :c, 5)
IO.puts(Keyword.get(kl_new, :c))
Ketika program di atas dijalankan, itu menghasilkan daftar Kata Kunci baru dengan kunci tambahan, c dan menghasilkan hasil sebagai berikut -
5
Menghapus kunci
Jika Anda ingin menghapus semua entri untuk sebuah kunci, gunakan Keyword.delete; untuk menghapus hanya entri pertama untuk kunci, gunakan Keyword.delete_first.
kl = [a: 1, a: 2, b: 3, c: 0]
kl = Keyword.delete_first(kl, :b)
kl = Keyword.delete(kl, :a)
IO.puts(Keyword.get(kl, :a))
IO.puts(Keyword.get(kl, :b))
IO.puts(Keyword.get(kl, :c))
Ini akan menghapus yang pertama b dalam Daftar dan semua adalam daftar. Ketika program di atas dijalankan, maka akan menghasilkan hasil sebagai berikut -
0