Gleam представляє значення правди та неправди за допомогою типу Bool. Існує лише два значення: True та False. Ці значення можна привʼязати до змінної:
let true_variable = True
let false_variable = False
Оператори && (логічне і), || (логічне або) та ! можна використовувати для роботи з булевими значеннями:
True && True // -> True
True && False // -> False
False || True // -> True
False || False // -> False
!False // -> True
!True // -> False
Оператори && (і) та || (або) використовують скорочене обчислення, що означає, що вираз праворуч від оператора обчислюється лише за потреби.
Кожен з операторів має різний пріоритет, де ! обчислюється перед && (і) та || (або). Фігурні дужки можна використати, щоб обчислити одну частину виразу перед іншими:
!True && False // -> False
!{True && False} // -> True
У цій вправі нам потрібно перекласти кілька правил із класичної гри Pac-Man у функції Gleam.
У нас є чотири правила для перекладу, і всі вони повʼязані зі станами гри.
Не переймаймося тим, як утворюються аргументи, просто зосередьмося на тому, щоб поєднати аргументи й повернути потрібний результат.
Визначте функцію eat_ghost, яка приймає два аргументи (чи в Pac-Man активна енергетична кулька і чи торкається Pac-Man привида) і повертає булеве значення (англ. Boolean) залежно від того, чи може Pac-Man зʼїсти привида. Функція має повертати True лише тоді, коли в Pac-Man активна енергетична кулька і він торкається привида.
eat_ghost(False, True)
// -> False
Визначте функцію score, яка приймає два аргументи (чи торкається Pac-Man енергетичної кульки і чи торкається Pac-Man точки) і повертає булеве значення залежно від того, чи набрав Pac-Man очки. Функція має повертати True, якщо Pac-Man торкається енергетичної кульки або точки.
score(True, True)
// -> True
Визначте функцію lose, яка приймає два аргументи (чи в Pac-Man активна енергетична кулька і чи торкається Pac-Man привида) і повертає булеве значення залежно від того, чи програє Pac-Man. Функція має повертати True, якщо Pac-Man торкається привида і в нього немає активної енергетичної кульки.
lose(False, True)
// -> True
Визначте функцію win, яка приймає три аргументи (чи зʼїв Pac-Man усі точки, чи в Pac-Man активна енергетична кулька і чи торкається Pac-Man привида) і повертає булеве значення залежно від того, чи перемагає Pac-Man. Функція має повертати True, якщо Pac-Man зʼїв усі точки і не програв за аргументами, визначеними в частині 3.
win(False, True, False)
// -> False
Зареєструйтеся на Exercism, щоб вивчати й опановувати Gleam, а також 33 концепції122 вправи та справжнє наставництво від людей, і все це безкоштовно.