Треки
/
Elixir
Elixir
/
Вправи
/
Бейдж з іменем
Бейдж з іменем

Бейдж з іменем

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

Вступ

Nil

Слово Nil в англійській мові означає «ніщо» або «нуль». В Elixir nil - це особливе значення, яке означає відсутність значення.

# I do not have a favorite color
favorite_color = nil

В інших мовах програмування подібну роль можуть відігравати значення null або none.

If

Крім cond, Elixir також надає макрос if/2, який стає в пригоді, коли потрібно перевірити лише одну умову.

if/2 приймає умову та два варіанти. Він повертає перший варіант, якщо умова truthy, і другий варіант, якщо умова falsy.

age = 15

if age >= 16 do
  "You are allowed to drink beer in Germany."
else
  "No beer for you!"
end

# => "No beer for you!"

Вираз if можна також записати в один рядок. Звернімо увагу на кому після умови.

if age > 16, do: "beer", else: "no beer"

Цей синтаксис стає в пригоді для дуже коротких виразів, але його варто оминати, якщо вираз не вміщується в один рядок.

Truthy та falsy

В Elixir усі типи даних набувають значення truthy або falsy, коли потрапляють у булевий контекст (англ. Boolean), наприклад у вираз if. Усі дані вважаються truthy крім false та nil. Зокрема, порожні рядки тексту (англ. string), ціле число 0 та порожні масиви в Elixir теж вважаються truthy.

Вказівки

У цій вправі ми будемо писати код, який друкує іменні бейджі для працівників фабрики. Працівники мають ідентифікатор, імʼя та назву відділу. Мітки на бейджах працівників мають такий формат: "[id] - name - DEPARTMENT".

1. Надрукувати бейдж для працівника

Реалізуйте функцію NameBadge.print/3. Вона має приймати ідентифікатор, імʼя та відділ. Вона має повертати мітку бейджа, у якій назва відділу записана великими літерами.

NameBadge.print(67, "Katherine Williams", "Strategic Communication")
# => "[67] - Katherine Williams - STRATEGIC COMMUNICATION"

2. Надрукувати бейдж для нового працівника

Через особливість компʼютерної системи нові працівники іноді ще не мають ідентифікатора, коли починають працювати на фабриці. Оскільки бейджі обовʼязкові, вони отримають тимчасовий бейдж без префікса з ідентифікатором.

Розширте функцію NameBadge.print/3. Якщо ідентифікатор відсутній, вона має друкувати бейдж без нього.

NameBadge.print(nil, "Robert Johnson", "Procurement")
# => "Robert Johnson - PROCUREMENT"

3. Надрукувати бейдж для власника

Навіть власник фабрики мусить постійно носити бейдж. Однак у власника немає відділу. У цьому випадку замість назви відділу на мітці потрібно надрукувати "OWNER".

Розширте функцію NameBadge.print/3. Якщо відділ відсутній, вважайте, що бейдж належить власнику компанії.

NameBadge.print(204, "Rachel Miller", nil)
# => "[204] - Rachel Miller - OWNER"

Зауважте, що власник може бути одночасно і новим працівником.

NameBadge.print(nil, "Rachel Miller", nil)
# => "Rachel Miller - OWNER"
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Elixir Exercism

Час розпочати Бейдж з іменем?

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