Initial upload
This commit is contained in:
25
elixir/remote-control-car/lib/remote_control_car.ex
Normal file
25
elixir/remote-control-car/lib/remote_control_car.ex
Normal file
@@ -0,0 +1,25 @@
|
||||
defmodule RemoteControlCar do
|
||||
@enforce_keys [:nickname]
|
||||
defstruct [:nickname, battery_percentage: 100, distance_driven_in_meters: 0]
|
||||
|
||||
def new(nickname \\ "none") do
|
||||
%RemoteControlCar{nickname: nickname}
|
||||
end
|
||||
|
||||
def display_distance(%RemoteControlCar{} = remote_car) do
|
||||
"#{remote_car.distance_driven_in_meters} meters"
|
||||
end
|
||||
|
||||
def display_battery(%RemoteControlCar{} = car) do
|
||||
if car.battery_percentage > 0 do
|
||||
"Battery at #{car.battery_percentage}%"
|
||||
else
|
||||
"Battery empty"
|
||||
end
|
||||
end
|
||||
|
||||
def drive(%RemoteControlCar{} = remote_car) when remote_car.battery_percentage > 0 do
|
||||
%{remote_car | battery_percentage: remote_car.battery_percentage - 1, distance_driven_in_meters: remote_car.distance_driven_in_meters + 20}
|
||||
end
|
||||
def drive(%RemoteControlCar{} = car), do: car
|
||||
end
|
Reference in New Issue
Block a user