Trong elixir, chúng tôi có Bản đồ:
> map = %{:a => "one", :b => "two"} # = %{a: "one", b: "two"}
> map.a # = "one"
> map[:a] # = "one"
Chúng tôi cũng có Danh sách Từ khoá:
> kl = [a: "one", b: "two"] # = [a: "one", b: "two"]
> kl2 = [{:a, "one"},{:b, "two"}] # = [a: "one", b: "two"]
> kl == kl2 # = true
> kl[:a] # = "one"
> kl.a # = ** (ArgumentError)
Tại sao cả hai?
Cú pháp? Có phải vì Danh sách từ khóa có cú pháp linh hoạt hơn cho phép chúng được xác định mà không có dấu ngoặc nhọn và thậm chí không có dấu ngoặc như tham số cuối cùng của một lệnh gọi hàm không? Vậy tại sao không cung cấp cho Maps đường cú pháp này?
Chìa khóa trùng lặp? Có phải vì Danh sách Từ khoá có thể có các khoá trùng lặp không? Tại sao bạn muốn cả quyền truy cập Kiểu bản đồ và các khóa trùng lặp?
Hiệu suất? Có phải vì Danh sách Từ khoá có hiệu suất tốt hơn không? Vậy tại sao lại có Bản đồ? Và không phải bản đồ sẽ hiệu quả hơn trong việc tra cứu các thành viên theo từng khóa hơn là một danh sách các bộ giá trị?
JS Array và Ruby Hash như ngoại hình? Là nó?
Tôi hiểu rằng về mặt cấu trúc, chúng là các biểu diễn dữ liệu khác nhau. Đối với tôi, có vẻ như Danh sách từ khóa trong thuốc tiên có tác dụng làm phức tạp ngôn ngữ thông qua cú pháp đặc biệt (3 biến thể cú pháp khác nhau), trùng lặp trường hợp sử dụng với bản đồ và lợi ích không rõ ràng.
Lợi ích của việc sử dụng Danh sách Từ khoá là gì?