44 lines
2.0 KiB
Markdown
44 lines
2.0 KiB
Markdown
|
# Hints
|
||
|
|
||
|
## General
|
||
|
|
||
|
- Read about [structs][getting-started-structs] in the Getting Started guide.
|
||
|
- Read about [`defstruct`][docs-defstruct] in the documentation.
|
||
|
- Watch [Elixir Casts - #106: Intro to Structs][elixir-casts].
|
||
|
|
||
|
## 1. Create a brand-new remote controlled car
|
||
|
|
||
|
- The module attribute `@enforce_keys` can be used to specify required values. It needs to be defined before calling `defstruct`.
|
||
|
- The `nickname` field should not have a default value specified.
|
||
|
- The `new/0` function should initialize the `nickname` with the value `"none"`.
|
||
|
|
||
|
## 2. Create a brand-new remote controlled car with a nickname
|
||
|
|
||
|
- Use [`multiple-function-clauses`][multiple-fn-clauses] to reuse the function name but accept different arguments.
|
||
|
- Consider a [`default-argument`][default-arg] for the function.
|
||
|
|
||
|
## 3. Display the distance
|
||
|
|
||
|
- For functions which accept only a specific type of struct, make sure you perform a pattern match to check the argument.
|
||
|
- Use the _static access operator_ to obtain field values.
|
||
|
|
||
|
## 4. Display the battery percentage
|
||
|
|
||
|
- For functions which accept only a specific type of struct, make sure you perform a pattern match to check the argument.
|
||
|
- Use the _static access operator_ to obtain field values.
|
||
|
|
||
|
## 5. Driving changes the battery and distance driven
|
||
|
|
||
|
- For functions which accept only a specific type of struct, make sure you perform a pattern match to check the argument.
|
||
|
- Use the _static access operator_ to obtain field values.
|
||
|
- Review the introduction for updating structs.
|
||
|
|
||
|
## 6. Account for driving with a dead battery
|
||
|
|
||
|
- If the battery is dead, it should return the struct unchanged.
|
||
|
|
||
|
[getting-started-structs]: https://elixir-lang.org/getting-started/structs.html
|
||
|
[docs-defstruct]: https://hexdocs.pm/elixir/Kernel.html#defstruct/1
|
||
|
[elixir-casts]: https://elixircasts.io/intro-to-structs
|
||
|
[multiple-fn-clauses]: https://elixir-lang.org/getting-started/modules-and-functions.html#named-functions
|
||
|
[default-arg]: https://elixir-lang.org/getting-started/modules-and-functions.html#default-arguments
|