O Swift disponibiliza um tipo incorporado chamado Bool para representar valores de verdade: true e false.
O Swift disponibiliza três operadores lógicos (!, && e ||) para combinar e avaliar expressões do tipo Boolean.
&&)O operador and (&&) devolve true apenas se ambos os operandos forem true.
Se um dos operandos for false, devolve false.
Coloca uma expressão ou um valor do tipo Boolean de cada lado do símbolo &&:
true && true // true
true && false // false
||)O operador or (||) devolve true se pelo menos um dos operandos for true.
Só devolve false quando ambos os operandos são false.
Coloca uma expressão ou um valor do tipo Boolean de cada lado do símbolo ||:
true || true // true
true || false // true
false || false // false
!)O operador not (!) inverte um valor do tipo Boolean.
Devolve true se o valor for false, e false se o valor for true.
Coloca o operador ! imediatamente antes do valor ou da expressão:
!true // false
!false // true
())Podes usar parênteses para agrupar expressões e controlar a ordem de avaliação. Em Swift, as expressões dentro de parênteses são avaliadas primeiro:
true && false && false || true // true
true && false && (false || true) // false
O agrupamento com parênteses também determina como o operador NOT se aplica a expressões complexas:
!true && false // false (evaluates (!true) first, then false && false)
!(true && false) // true (evaluates (true && false) first to false, then !false)
Usa parênteses quando precisares de clarificar a ordem de avaliação ou de tornar condições complexas mais fáceis de ler. Evita adicionar parênteses desnecessários quando a precedência predefinida já é clara.
Estás a desenvolver o novo e muito apreciado jogo Wings Quest. No jogo, és uma ave que se move e recolhe sementes. O jogador ganha ao apanhar todas as sementes. Se o jogador entrar em contacto com uma águia, perde todas as sementes e perde o jogo. Há uma exceção a esta regra: o jogador pode ter um power-up ativo que o faz voar mais alto do que as outras aves.
O teu objetivo é escrever algumas regras que serão usadas no jogo.
No jogo, a ave ganha pontos de bónus se tocar numa águia enquanto tem um power-up ativo.
Define a função bonusPoints(powerUpActive:touchingEagle:), que recebe dois argumentos: powerUpActive, que indica se a ave tem um power-up ativo, e o argumento touchingEagle, que indica se a ave está a tocar numa águia.
A função deve devolver true apenas se a ave tiver um power-up ativo e estiver a tocar numa águia, e false caso contrário.
bonusPoints(powerUpActive: false, touchingEagle: true)
// Returns false
No jogo, o jogador ganha pontos quando apanha uma semente ou um power-up.
Define a função score(touchingPowerUp:touchingSeed:), que recebe dois argumentos: touchingPowerUp, que indica se a ave está a tocar num power-up, e o argumento touchingSeed, que indica se a ave está a tocar numa semente.
A função deve devolver true se a ave estiver a tocar num power-up ou numa semente, e devolver false caso contrário.
score(touchingPowerUp: true, touchingSeed: true)
// Returns true
Define a função lose(powerUpActive:touchingEagle:), que recebe dois argumentos: powerUpActive, que indica se a ave tem um power-up ativo, e o argumento touchingEagle, que indica se a ave está a tocar numa águia.
A função deve devolver true se a personagem estiver a tocar numa águia e não tiver um power-up ativo, e devolver false caso contrário.
lose(powerUpActive: false, touchingEagle: true)
// Returns true
Define a função win(hasPickedUpAllSeeds:powerUpActive:touchingEagle:), que recebe os argumentos:
hasPickedUpAllSeeds se a ave apanhou todas as sementes.powerUpActive se a ave tem um power-up ativo.touchingEagle se a ave está a tocar numa águia.A função deve devolver true se a ave tiver recolhido todas as sementes e não tiver perdido, com base nos argumentos definidos na parte 3, e devolver false caso contrário.
win(hasPickedUpAllSeeds: false, powerUpActive: true, touchingEagle: false)
// Returns false
Inscreve-te no Exercism para aprenderes e dominares Swift com 35 conceitos116 exercícios, e mentoria humana real, tudo grátis.