O Swift oferece um tipo embutido chamado Bool para representar valores de verdade: true e false.
O Swift oferece três operadores lógicos (!, && e ||) para combinar e avaliar expressões Boolean.
&&)O operador e (&&) retorna true somente se os dois operandos forem true.
Se um dos operandos for false, ele retorna false.
Coloque uma expressão ou um valor Boolean de cada lado do símbolo &&:
true && true // true
true && false // false
||)O operador ou (||) retorna true se pelo menos um dos operandos for true.
Retorna false apenas quando os dois operandos são false.
Coloque uma expressão ou um valor Boolean de cada lado do símbolo ||:
true || true // true
true || false // true
false || false // false
!)O operador não (!) inverte um valor Boolean.
Ele retorna true se o valor for false, e false se o valor for true.
Coloque o operador ! imediatamente antes do valor ou da expressão:
!true // false
!false // true
())Você pode usar parênteses para agrupar expressões e controlar a ordem de avaliação. No Swift, as expressões dentro dos parênteses são avaliadas primeiro:
true && false && false || true // true
true && false && (false || true) // false
Agrupar com parênteses também determina como o operador NÃO 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)
Use parênteses quando precisar deixar a ordem de avaliação mais clara ou tornar condições complexas mais fáceis de ler. Evite adicionar parênteses desnecessários quando a precedência padrão já estiver clara.
Você está desenvolvendo o novo e muito elogiado jogo Wings Quest. No jogo, você é um pássaro que se move e coleta sementes. O jogador vence ao coletar todas as sementes. Se o jogador entrar em contato com uma águia, perde todas as suas sementes e perde o jogo. Há uma exceção a essa regra: o jogador pode ter um power-up ativo que permite voar mais alto que os outros pássaros.
Seu objetivo é escrever algumas regras que serão usadas no jogo.
No jogo, o pássaro ganha pontos de bônus se tocar uma águia enquanto tem um power-up.
Defina a função bonusPoints(powerUpActive:touchingEagle:) que recebe dois argumentos: powerUpActive, que indica se o pássaro tem um power-up ativo, e o argumento touchingEagle, que indica se o pássaro está tocando uma águia.
A função deve retornar true apenas se o pássaro tiver um power-up ativo e estiver tocando uma águia, e false caso contrário.
bonusPoints(powerUpActive: false, touchingEagle: true)
// Returns false
No jogo, o jogador ganha pontos ao pegar uma semente ou um power-up.
Defina a função score(touchingPowerUp:touchingSeed:) que recebe dois argumentos: touchingPowerUp, que indica se o pássaro está tocando um power-up, e o argumento touchingSeed, que indica se o pássaro está tocando uma semente.
A função deve retornar true se o pássaro estiver tocando um power-up ou uma semente, e retornar false caso contrário.
score(touchingPowerUp: true, touchingSeed: true)
// Returns true
Defina a função lose(powerUpActive:touchingEagle:) que recebe dois argumentos: powerUpActive, que indica se o pássaro tem um power-up ativo, e o argumento touchingEagle, que indica se o pássaro está tocando uma águia.
A função deve retornar true se o pássaro estiver tocando uma águia e não tiver um power-up ativo, e retornar false caso contrário.
lose(powerUpActive: false, touchingEagle: true)
// Returns true
Defina a função win(hasPickedUpAllSeeds:powerUpActive:touchingEagle:) que recebe os argumentos:
hasPickedUpAllSeeds se o pássaro pegou todas as sementes.powerUpActive se o pássaro tem um power-up ativo.touchingEagle se o pássaro está tocando uma águia.A função deve retornar true se o pássaro pegou todas as sementes e não perdeu, com base nos argumentos definidos na parte 3, e retornar false caso contrário.
win(hasPickedUpAllSeeds: false, powerUpActive: true, touchingEagle: false)
// Returns false
Crie sua conta no Exercism para aprender e dominar Swift com 35 conceitos116 exercícios e mentoria humana de verdade, tudo de graça.