Swift Playgrounds

コードを学ぼう1【正しいループを使う】解答例と解説

正しいループを使う

解答例

func turnAndCollectGem() {
   moveForward()
   turnLeft()
   moveForward()
   collectGem()
   turnRight()
}

while !isBlocked {
   turnAndCollectGem()
}

解説

関数がはじめから親切に書いてあるので、助かりますね。
ループを使うのはわかるけど、どっちのループを使えばいいのか・・・。
それについて、問題文に以下のように書いてあります。

コーディングでは、問題の解きかたを、好みによって選べるときがあります。
このようなときは、できるだけ、全体のコードが短くなる方法、またはたくさんのコードを再利用できる方法を選びましょう。

つまり、簡潔で分かりやすく、短いコードになるように考えないといけません。
そこで、whileループを使うと『行き止まりにならない限り繰り返す』ことができるので、分かりやすいです。
また、この課題では以下のように、forループも使うことができます。

func turnAndCollectGem() {
  moveForward()
  turnLeft()
  moveForward()
  collectGem()
  turnRight()
}

for i in 1 ... 6 {
  turnAndCollectGem()
}

短いし、分かりやすくて、このコードでも良さそうですね。
ただ、何回繰り返すのか数えないといけないので、
6回くらいならいいですが、これが何十回となってくると
whileループを使った方が分かりやすいのかもしれません。
このように、状況に応じてどのような条件を使うのか判断が必要ですね。

要点まとめ

・解き方が複数ある場合、簡潔で分かりやすく、短いコードになるようにしよう