Keyword lists
| Keyword syntax | |
| Options pattern | |
| Keyword.get | |
| Keywords vs maps |
Keyword syntax
A keyword list is a list of two item tuples with atom first items.
Elixir offers short syntax that drops the braces and the arrows.
Both forms below build the same value, as the equality check proves.
opts = [name: "Ada", loud: true]
same = [{:name, "Ada"}, {:loud, true}]
opts == same
Options pattern
Libraries accept trailing options so callers pass only what they change.
The function reads each flag by name and falls back when the flag is absent.
Callers write plain pairs, and a loud call tags the greeting while a calm one does not.
def greet(name, opts) do
if opts[:loud] do
{:loud, name}
else
{:calm, name}
end
end
greet("Ada", loud: true)
Keyword.get
Keyword get reads one option and accepts a fallback for missing keys.
The fallback keeps callers short, since they skip every default they do not need.
A present flag answers with its value, while a missing flag answers with the fallback.
opts = [loud: true]
Keyword.get(opts, :loud, false)
Keyword.get(opts, :fast, false)
Keywords vs maps
Keyword lists keep order and allow repeats, while maps keep one value per key with fast lookup.
Options on the way in fit keywords, and stored facts fit maps.
When keys must be atoms and order matters, keywords win the choice.
opts = [tag: 1, tag: 2]
Keyword.get_values(opts, :tag)
Map.new(opts)
Next: Functions
Article author: Arthur Isaev