exercism-elixir/remote-control-car/lib/remote_control_car.ex
2022-02-11 13:56:43 -04:00

19 lines
803 B
Elixir

defmodule RemoteControlCar do
@enforce_keys [:nickname]
defstruct [:nickname, battery_percentage: 100, distance_driven_in_meters: 0]
def new(nickname \\ "none"), do: %__MODULE__{nickname: nickname}
def display_distance(%__MODULE__{distance_driven_in_meters: distance}),
do: "#{distance} meters"
def display_battery(%__MODULE__{battery_percentage: 0}), do: "Battery empty"
def display_battery(%__MODULE__{battery_percentage: battery}), do: "Battery at #{battery}%"
def drive(%__MODULE__{battery_percentage: 0} = car),
do: %{car | battery_percentage: 0, distance_driven_in_meters: 0}
def drive(%__MODULE__{battery_percentage: battery, distance_driven_in_meters: distance} = car),
do: %{car | battery_percentage: battery - 1, distance_driven_in_meters: distance + 20}
end