Elixir представляє значення правда та неправда за допомогою булевого типу. Існує лише два значення: true та false. Ці значення можна привʼязати до змінної:
true_variable = true
false_variable = false
Ми можемо обчислювати строгі булеві вирази за допомогою операторів and/2, or/2 та not/1.
true_variable = true and true
false_variable = true and false
true_variable = false or true
false_variable = false or false
true_variable = not false
false_variable = not true
Коли ми пишемо функцію, яка повертає булеве значення, ідіоматично завершувати назву функції знаком ?. Таку саму домовленість можна застосувати до змінних, які зберігають булеві значення.
def either_true?(a?, b?) do
a? or b?
end
У цій вправі ми маємо перекласти кілька правил із класичної гри Pac-Man у функції Elixir.
Нам потрібно перекласти чотири правила, усі повʼязані зі станами гри.
Не хвилюйтеся про те, як виводяться аргументи, просто зосередьтеся на поєднанні аргументів, щоб повернути потрібний результат.
Визначте функцію Rules.eat_ghost?/2, яка приймає два аргументи (чи є в Pac-Man активна енергетична пігулка та чи торкається Pac-Man привида) і повертає булеве значення (англ. Boolean), якщо Pac-Man здатен зʼїсти привида. Функція повинна повертати правду, лише якщо в Pac-Man є активна енергетична пігулка і він торкається привида.
Rules.eat_ghost?(false, true)
# => false
Визначте функцію Rules.score?/2, яка приймає два аргументи (чи торкається Pac-Man енергетичної пігулки та чи торкається Pac-Man крапки) і повертає булеве значення, якщо Pac-Man набрав очки. Функція повинна повертати правду, якщо Pac-Man торкається енергетичної пігулки або крапки.
Rules.score?(true, true)
# => true
Визначте функцію Rules.lose?/2, яка приймає два аргументи (чи є в Pac-Man активна енергетична пігулка та чи торкається Pac-Man привида) і повертає булеве значення, якщо Pac-Man програє. Функція повинна повертати правду, якщо Pac-Man торкається привида і в нього немає активної енергетичної пігулки.
Rules.lose?(false, true)
# => true
Визначте функцію Rules.win?/3, яка приймає три аргументи (чи зʼїв Pac-Man усі крапки, чи є в Pac-Man активна енергетична пігулка та чи торкається Pac-Man привида) і повертає булеве значення, якщо Pac-Man перемагає. Функція повинна повертати правду, якщо Pac-Man зʼїв усі крапки і не програв за аргументами, визначеними в частині 3.
Rules.win?(false, true, false)
# => false
Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.