エリキシルにはマップがあります:
> map = %{:a => "one", :b => "two"} # = %{a: "one", b: "two"}
> map.a # = "one"
> map[:a] # = "one"
キーワードリストもあります。
> 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)
なぜ両方?
構文?キーワードリストにはより柔軟な構文があり、関数呼び出しの最後のパラメーターとして、中括弧や大括弧なしでも定義できるためですか?それでは、マップにこの構文糖を与えてみませんか?
重複するキー?キーワードリストに重複したキーが含まれる可能性があるためですか?マップスタイルのアクセスと重複キーの両方が必要なのはなぜですか?
パフォーマンス?キーワードリストの方がパフォーマンスが優れているためでしょうか。では、なぜマップがあるのですか?そして、マップはタプルのリストよりもキーでメンバーを検索する方がパフォーマンスが良くないのではないでしょうか?
JS配列とRubyハッシュのような外観ですか?それですか?
構造的には異なるデータ表現であることを理解しています。私には、elixirのキーワードリストは、例外的な構文(3つの異なる構文バリアント)、マップとの大文字と小文字の重複、および不明確な利点により、言語を複雑にするように見えます。
キーワードリストを使用する利点は何ですか?