Swift Playgrounds

コードを学ぼう1【両方正しければ合格】解答例と解説

両方正しければ合格

解答例

for i in 1 ... 7 {
  moveForward()
  if isOnGem && isBlockedLeft {
    collectGem()
    turnRight()
    moveForward()
    moveForward()
    toggleSwitch()
    turnLeft()
    turnLeft()
    moveForward()
    moveForward()
    turnRight()      
  } else if isOnGem {
    collectGem()
  }
}

解説

課題の名前にあるように、『2つの条件が揃うと動作する』というコードを作ります。
もし、左側が行き止まり、という条件だけだったら、
2歩目のonのスイッチまで反応してしまい、エラーが起きてしまいます。
『左側が行き止まりで、尚且つ宝石の上』を、論理AND演算子(&&)を使って表現します。
&&は、2つのブール値が両方ともtrueの場合のみ、trueになります。
そして、else ifを使って
『左側が行き止まりで、尚且つ宝石の上〝ではないけど〟宝石の上』にいる場合、宝石を取る、というコードを書きます。
7歩前進する中で、条件分岐を使いながら進んでゴールです。

要点まとめ

・&&を使うと、2つのブール条件にあった時に動作するコードを作れる