關鍵字列表

關鍵字列表是列表,其中列表中的每個專案是一個原子的元組,後跟一個值。

keyword_list = [{:a, 123}, {:b, 456}, {:c, 789}]

編寫關鍵字列表的簡寫表示法如下:

keyword_list = [a: 123, b: 456, c: 789]

關鍵字列表對於建立有序鍵值對資料結構很有用,其中給定鍵可以存在多個專案。

可以像這樣獲得給定鍵的關鍵字列表中的第一項:

iex> keyword_list[:b]
456

關鍵字列表的用例可以是要執行的一系列命名任務:

defmodule TaskRunner do
  def run_tasks(tasks) do
    # Call a function for each item in the keyword list.
    # Use pattern matching on each {:key, value} tuple in the keyword list
    Enum.each(tasks, fn
      {:delete, x} ->
        IO.puts("Deleting record " <> to_string(x) <> "...")
      {:add, value} ->
        IO.puts("Adding record \"" <> value <> "\"...")
      {:update, {x, value}} ->
        IO.puts("Setting record " <> to_string(x) <> " to \"" <> value <> "\"...")
    end)
  end
end

可以使用關鍵字列表呼叫此程式碼,如下所示:

iex> tasks = [
...>   add: "foo",
...>   add: "bar",
...>   add: "test",
...>   delete: 2,
...>   update: {1, "asdf"}
...> ]

iex> TaskRunner.run_tasks(tasks)
Adding record "foo"...
Adding record "bar"...
Adding record "test"...
Deleting record 2...
Setting record 1 to "asdf"...