Match On A Map In A With Construct
Many usage example of the with construct show a series of matches on a tuple.
with {:ok, width} <- Map.fetch(opts, :width),
     {:ok, height} <- Map.fetch(opts, :height) do
  {:ok, width * height}
endYou can match on more than just tuples though. Here is how you might match on a map.
with %{status_code: 200, body: body} <- HTTPoison.get!(url),
     {:ok, decoded_body} <- Poison.decode(body) do
  {:ok, decoded_body}
endIn fact, you have the full power of Elixir's pattern matching available to you in your series of matches for a with construct.
Last updated
Was this helpful?