Pattern Matching and Updating Maps
The question we most often ask of our maps is, “Do you have the following keys (and maybe values)?”
-
Is there an entry with the key :name?
-
Are there entries for the keys :name and :height?
-
Does the entry with key :name have the value "Dave"?
Here’s how we ask these questions using Elixir patterns.
| iex> person = %{ name: "Dave", height: 1.88 } |
| %{height: 1.88, name: "Dave"} |
| iex> %{ name: a_name } = person |
| %{height: 1.88, name: "Dave"} |
| iex> a_name |
| "Dave" |
| iex> %{ name: _, height: _ } = person |
| %{height: 1.88, name: "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> %{ ... |
Get Programming Elixir 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.