Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Untitled notebook

projetos.livemd

Untitled notebook

Section

defmodule People do
  defstruct first_name: nil,
            last_name: nil, 
            birthday: nil,
            location: "home"

  def full_name(%__MODULE__{} = person) do
    "#{person.first_name} #{person.last_name}"
  end

  def age(%__MODULE__{} = person) do
    days = Date.diff(Date.utc_today(), person.birthday)
    days / 365.25
  end

  def toggle_location(%__MODULE__{location: "away"} = person) do
    person |> set_location("home")
  end

  defp set_location(%__MODULE__{} = person, location) do
    %{person | location: location}
  end
  
end
person = %People{first_name: "Bruce", last_name: "Wayne", birthday: ~D[2000-01-01], location: "away"}
People.full_name(person)
People.age(person)
People.toggle_location(person)