Swift 提供了內建的型別 Bool,用來表示真值:true和false。
Swift 提供了三種邏輯運算子(!、&& 和 ||),用來組合並評估布林運算式。
&&)and 運算子(&&)只有在兩個運算元都是true時才會回傳true。
只要任一個運算元是false,它就回傳false。
在&&符號的兩側各放一個運算式或布林值:
true && true // true
true && false // false
||)or 運算子(||)只要至少一個運算元是true就回傳true。
只有當兩個運算元都是false時,它才會回傳false。
在||符號的兩側各放一個運算式或布林值:
true || true // true
true || false // true
false || false // false
!)not 運算子(!)會反轉布林值。
如果值是false,它就回傳true;如果值是true,它就回傳false。
把!運算子緊接在值或運算式之前:
!true // false
!false // true
())你可以用括號把運算式分組,並控制評估的順序。 在 Swift 中,括號內的運算式會先被評估:
true && false && false || true // true
true && false && (false || true) // false
用括號分組也會決定 NOT 運算子如何套用到複雜的運算式:
!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表示鳥是否正碰到老鷹。如果鳥已收集所有種子,且根據第 3 部分定義的引數判斷並未落敗,這個函式應該回傳true,否則回傳false。
win(hasPickedUpAllSeeds: false, powerUpActive: true, touchingEagle: false)
// Returns false