複数の条件を組み合わせるelse ifという書き方が登場するステージです。
elseは「もしくは」みたいな意味の言葉です。出題文中のコードは以下のようなものですね。
1 2 3 4 5 |
if isOnClosedSwitch { toggleSwitch() } else if ifOnGem { collectGem() } |
こちらも日本語にしてみると、
1 2 3 4 5 |
もし 閉スイッチの上にいたら { スイッチを切り替える() } もしくは もし 宝石の場所にいたら { 宝石を取る() } |
という感じになります。コードを実行してみるまで、そこにスイッチがくるか宝石がくるかわからない時にこうする必要が出てきます。
ステージとしては、前方の2コマを順にチェック&操作するのでfor文を使って繰り返します。
1 2 3 4 5 6 7 8 9 10 |
//全体を2回繰り替えす for i in 1 ... 2 { moveForward() //宝石があれば取り、閉スイッチがあれば切り替える if isOnGem { collectGem() } else if isOnClosedSwitch { toggleSwitch() } } |
ところで、下のようにelseを使わないでif文を2回書いたらどうなの?と思うかも知れません。
1 2 3 4 5 6 7 8 9 10 11 12 |
//全体を2回繰り替えす for i in 1 ... 2 { moveForward() //宝石があったら取る if isOnGem { collectGem() } //閉スイッチがあれば切り替える if isOnClosedSwitch { toggleSwitch() } } |
一応「else」を習うためのステージなのでelseを使う方がより模範的な回答ですが、このステージはどちらでもクリアできます。しかしこの2つの書き方は厳密には意味が違います。どう違うと思いますか?答えは追々。