Треки
/
Elixir
Elixir
/
Вправи
/
Потрібна швидкість
Потрібна швидкість

Потрібна швидкість

Навчальна вправа

Вступ

Псевдонім

Щоб ділитися кодом між різними модулями Elixir у межах одного проєкту, потрібно посилатися на зовнішній модуль за його повним імʼям. Але що робити, якщо це імʼя задовге або заплутане?

Спеціальна форма alias дає змогу скоротити чи змінити імʼя, за яким ми посилаємося на зовнішній модуль. Якщо використати її без аргументів, вона вкорочує імʼя модуля до останнього сегмента, наприклад MyApp.Logger.Settings стає Settings. Власне імʼя можна задати за допомогою опції :as.

Зазвичай псевдоніми додають на початку визначення модуля.

defmodule Square do
  alias Integer, as: I

  def area(a), do: I.pow(a, 2)
end

Імпорт

Спеціальна форма import дає змогу використовувати функції із зовнішнього модуля, не згадуючи імені цього модуля.

Імпортування цілого зовнішнього модуля може створити конфлікти з наявними локальними функціями. Щоб цього уникнути, є дві опції: :except і :only. Обидві приймають список ключових слів, де ключ - це назва функції, а значення - арність функції.

Зазвичай імпорти додають на початку визначення модуля.

defmodule Square do
  import Integer, only: [pow: 2]

  def area(a), do: pow(a, 2)
end

Вказівки

Та радіокерована машинка, яку ми нещодавно купили, перетворилася на ціле нове хобі. Ми організовували перегони радіокерованих машинок.

Ми майже дописали програму, яка дозволяла б запускати симуляції перегонів, коли кіт стрибнув на нашу клавіатуру і стер кілька рядків коду. Тепер наша програма більше не компілюється...

1. Виправте помилку компіляції Race.__struct__/0 is undefined

Додайте псевдонім, щоб до модуля NeedForSpeed.Race можна було звертатися за коротшим іменем Race.

2. Виправте помилку компіляції Car.__struct__/0 is undefined

Додайте псевдонім, щоб до модуля NeedForSpeed.RemoteControlCar можна було звертатися за коротшим іменем Car.

3. Виправте помилку компіляції undefined function puts/1

Функція puts/1 походить з модуля IO. Імпортуйте її, щоб мати змогу використовувати без звернення до модуля.

4. Виправте помилку компіляції undefined function default_color/0

Функції default_color/0, red/0, cyan/0 і green/0 усі походять з модуля IO.ANSI. Ми плануємо додати підтримку інших кольорів машинок, тож хочемо імпортувати весь модуль. На жаль, функція color/1 з модуля IO.ANSI конфліктує з однією з наших локальних функцій. Імпортуйте весь модуль IO.ANSI, крім цієї однієї функції.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Elixir Exercism

Час розпочати Потрібна швидкість?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.