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

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.

主站蜘蛛池模板: 威信县| 饶平县| 安新县| 绥德县| 滨海县| 泾川县| 巴塘县| 谢通门县| 河间市| 苍南县| 宿迁市| 牡丹江市| 甘泉县| 迭部县| 乌鲁木齐县| 德化县| 湘潭市| 鄄城县| 赤壁市| 长葛市| 桦南县| 扶沟县| 方正县| 邢台市| 宝鸡市| 修武县| 徐水县| 涪陵区| 奉化市| 洛浦县| 渝北区| 吴桥县| 饶平县| 丰镇市| 蒙自县| 本溪市| 惠安县| 青海省| 泽州县| 罗山县| 怀集县|