关键字列表
关键字列表是列表,其中列表中的每个项目是一个原子的元组,后跟一个值。
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"...