官术网_书友最值得收藏!

Keyword lists

A keyword list is a list in which its elements have a specific format: they are tuples where the first element is an atom (the second element can be of any type), as demonstrated in the following example:

iex> [name: "Gabriel", age: 1] = [{:name, "Gabriel"}, {:age, 1}]
[name: "Gabriel", age: 1]

We can create keyword lists using the following syntax:

iex> keyword_list = [name: "Gabriel", age: 1]
[name: "Gabriel", age: 1]
iex> keyword_list[:name]
"Gabriel"

As you can see from the previous snippet, a keyword list is indeed a list of tuples, with an atom; you can access values in a keyword list using the same syntax as you would in maps. As an alternative, you can use the get function from the Keyword module. Note that this way of declaring a keyword list is just syntatic sugar, as internally this still is a list of tupleswhich means that searching for an item in a keyword list is O(n), and not O(1) as in maps.

In a keyword list, contrary to what happens in maps, you can have more than one value for a given key. Also, you can control the order of its elements. Usually, keyword lists are used to allow functions to receive an arbitrary number of optional arguments. We'll be showing an example of this when we look at named functions later in this chapter. You can find all the operations you can do on a keyword list at https://hexdocs.pm/elixir/Keyword.html.

主站蜘蛛池模板: 红安县| 阿图什市| 乐业县| 玉龙| 甘南县| 彭山县| 高密市| 来宾市| 来宾市| 茂名市| 江安县| 时尚| 连云港市| 双辽市| 高碑店市| 呼玛县| 砀山县| 临海市| 辽中县| 南京市| 台南市| 横山县| 武定县| 边坝县| 锦屏县| 海南省| 息烽县| 彭山县| 玉山县| 含山县| 巴里| 隆化县| 固阳县| 汉源县| 庄河市| 祥云县| 康保县| 沙坪坝区| 奉贤区| 金沙县| 徐汇区|