Треки
/
Gleam
Gleam
/
Вправи
/
Скриня зі скарбами
Скриня зі скарбами

Скриня зі скарбами

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

Вступ

Узагальнення

Тип є узагальненим типом, коли він може містити значення будь-якого типу за допомогою параметра типу.

Наприклад, цей тип Box має параметр типу a (записується малими літерами).

pub type Box(a) {
  Box(a)
}

Параметр типу a є заповнювачем для будь-якого типу, тому Box можна використовувати з рядками тексту (англ. string), цілими числами чи будь-яким іншим типом.

Box("Hello, Joe!") // The type is Box(String)

Box(42) // The type is Box(Int)

Тип може мати кілька параметрів типу, якщо розділити їх комами.

pub type Pair(a, b) {
  Pair(a, b)
}

Узагальнені функції

Параметри типу можна також використовувати в аргументах функцій.

Ця функція приймає значення типу a і двічі викликає функцію, яка приймає a та повертає b.

pub fn twice(value: a, f: fn(a) -> b) -> b {
  f(value)
  f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)

Вказівки

У цій вправі ми напишемо узагальнений (/ чарівний!) TreasureChest, щоб зберігати скарби.

1. Визначте власний узагальнений тип TreasureChest

Визначте власний тип TreasureChest з одним варіантом.

Варіант повинен мати повʼязане значення String, яке зберігатиме пароль від скрині зі скарбами.

Варіант також повинен мати повʼязане узагальнене значення, яке зберігатиме скарб. Це значення узагальнене, тож скарбом може бути будь-що.

2. Визначте тип UnlockResult

Визначте власний тип UnlockResult з двома варіантами.

Перший варіант має називатися Unlocked і містити узагальнене значення, яке зберігатиме скарб.

Другий варіант має називатися WrongPassword і не містить жодних значень.

3. Визначте функцію get_treasure

Ця функція має приймати два параметри

  • власний узагальнений тип TreasureChest
  • String (щоб спробувати пароль)

Ця функція має звірити надану спробу пароля зі String у TreasureChest.

Функція має повертати UnlockResult.

Якщо паролі збігаються, поверніть Unlocked з узагальненим значенням із TreasureChest (тобто зі скарбом!)

Якщо паролі не збігаються, поверніть WrongPassword.

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

Час розпочати Скриня зі скарбами?

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