Swift надає вбудований тип Bool для представлення булевих значень (англ. Boolean): true та false.
Swift має три логічні оператори для поєднання й обчислення булевих виразів: ! (логічне заперечення), && (логічне і) та || (логічне або).
&&)Оператор і (&&) повертає true, тільки якщо обидва операнди дорівнюють true.
Якщо хоч один з операндів дорівнює false, він повертає false.
З кожного боку від символу && ставимо вираз або булеве значення:
true && true // true
true && false // false
||)Оператор або (||) повертає true, якщо принаймні один з операндів дорівнює true.
Він повертає false, лише коли обидва операнди дорівнюють false.
З кожного боку від символу || ставимо вираз або булеве значення:
true || true // true
true || false // true
false || false // false
!)Оператор заперечення (!) інвертує булеве значення.
Він повертає true, якщо значення дорівнює false, і false, якщо значення дорівнює true.
Ставмо оператор ! безпосередньо перед значенням або виразом:
!true // false
!false // true
())Ми можемо використовувати дужки, щоб групувати вирази й керувати порядком обчислення. У Swift спершу обчислюється те, що стоїть у дужках:
true && false && false || true // true
true && false && (false || true) // false
Групування за допомогою дужок також визначає, як оператор заперечення застосовується до складних виразів:
!true && false // false (evaluates (!true) first, then false && false)
!(true && false) // true (evaluates (true && false) first to false, then !false)
Використовуймо дужки тоді, коли потрібно уточнити порядок обчислення або зробити складні умови легшими для читання. Не додаваймо зайвих дужок, якщо порядок обчислення й без них зрозумілий.
Ми розробляємо нову гру Wings Quest, яка має стати надзвичайно популярною. У грі ми граємо за птаха, який рухається та збирає насіння. Гравець перемагає, коли збирає все насіння. Якщо гравець торкнеться орла, він втратить усе своє насіння і програє. Із цього правила є виняток: гравець може мати активний підсилювач, який дозволяє йому літати вище за інших птахів.
Наша мета - написати кілька правил, які будуть використовуватися у грі.
У грі птах отримує бонусні очки, якщо торкається орла, маючи активний підсилювач.
Визначимо функцію bonusPoints(powerUpActive:touchingEagle:), яка приймає два аргументи: powerUpActive, що показує, чи має птах активний підсилювач, та аргумент touchingEagle, що показує, чи торкається птах орла.
Функція повинна повертати true, лише якщо птах має активний підсилювач і торкається орла, і повертати false в іншому випадку.
bonusPoints(powerUpActive: false, touchingEagle: true)
// Returns false
У грі гравець набирає очки, коли підбирає насіння або підсилювач.
Визначимо функцію score(touchingPowerUp:touchingSeed:), яка приймає два аргументи: touchingPowerUp, що показує, чи торкається птах підсилювача, та аргумент touchingSeed, що показує, чи торкається птах насіння.
Функція повинна повертати true, якщо птах торкається підсилювача або насіння, і повертати false в іншому випадку.
score(touchingPowerUp: true, touchingSeed: true)
// Returns true
Визначимо функцію lose(powerUpActive:touchingEagle:), яка приймає два аргументи: powerUpActive, що показує, чи має птах активний підсилювач, та аргумент touchingEagle, що показує, чи торкається птах орла.
Функція повинна повертати true, якщо персонаж торкається орла і не має активного підсилювача, і повертати false в іншому випадку.
lose(powerUpActive: false, touchingEagle: true)
// Returns true
Визначимо функцію win(hasPickedUpAllSeeds:powerUpActive:touchingEagle:), яка приймає такі аргументи:
hasPickedUpAllSeeds показує, чи зібрав птах усе насіння.powerUpActive показує, чи має птах активний підсилювач.touchingEagle показує, чи торкається птах орла.Функція повинна повертати true, якщо птах зібрав усе насіння і не програв згідно з аргументами, визначеними в частині 3, і повертати false в іншому випадку.
win(hasPickedUpAllSeeds: false, powerUpActive: true, touchingEagle: false)
// Returns false
Зареєструйтеся на Exercism, щоб вивчати й опановувати Swift, а також 35 концепцій116 вправ та справжнє наставництво від людей, і все це безкоштовно.