Struct Pattern Matching in Arguments of Functions
From ElixirBlocks
Example
%Person{} = person
defmodule Person do defstruct [ first_name: nil, last_name: nil, birthday: nil, location: "home" ] def full_name(%Person{} = person) do "#{person.first_name} #{person.last_name}" end def age(%Person{} = person) do days = Date.diff(Date.utc_today, person.birthday) days / 365.25 end def home(%Person{} = person) do %{person | location: "home"} end def away(%Person{} = person) do %{person | location: "away"} end end