W eliksirze mamy mapy:
> map = %{:a => "one", :b => "two"} # = %{a: "one", b: "two"}
> map.a # = "one"
> map[:a] # = "one"
Mamy również listy słów kluczowych:
> 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)
Dlaczego jedno i drugie?
Składnia? Czy dzieje się tak dlatego, że listy słów kluczowych mają bardziej elastyczną składnię, dzięki czemu mogą być definiowane bez zawiasów, a nawet bez nawiasów jako ostatni parametr wywołania funkcji? Dlaczego więc nie dać Mapom tego cukru syntaktycznego?
Zduplikowane klucze? Czy to dlatego, że listy słów kluczowych mogą mieć zduplikowane klucze? Dlaczego chcesz mieć zarówno dostęp w stylu mapy, jak i zduplikowane klucze?
Występ? Czy to dlatego, że listy słów kluczowych mają lepszą wydajność? Dlaczego więc masz Mapy? I czy mapy nie powinny skuteczniej wyszukiwać członków według klucza niż lista krotek?
JS Array i Ruby Hash jak wygląd? Czy to to?
Rozumiem, że strukturalnie są to różne reprezentacje danych. Wydaje mi się, że listy słów kluczowych w eliksirze komplikują język poprzez wyjątkową składnię (3 różne warianty składni), przypadki użycia pokrywają się z mapami i niejasne korzyści.
Jakie są zalety korzystania z list słów kluczowych?