Pattern Matching and Updating Maps
The question we most often ask of our maps is, “Do you have the following keys (and maybe values)?” For example, given the map:
| person = %{ name: "Dave", height: 1.88 } |
-
Is there an entry with the key :name?
iex> %{ name: a_name } = person %{height: 1.88, name: "Dave"} iex> a_name "Dave" -
Are there entries for the keys :name and :height?
iex> %{ name: _, height: _ } = person %{height: 1.88, name: "Dave"} -
Does the entry with key :name have the value "Dave"?
iex> %{ name: "Dave" } = person %{height: 1.88, name: "Dave"}
Our map does not have the key :weight, so the following pattern match fails:
| iex> %{ name: _, weight: _ } = person |
| ** (MatchError) no match of right ... |
Get Programming Elixir 1.3 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.