【Swift】while文の使い方(Swift 2.1、XCode 7.2)

2020年6月16日

while文とは

while文とは、for文と同じように規則的な処理を繰り返す場合に使われる制御文である。⇒「for文の使い方

 

while文とif文の違い

while文で記述できるコードはfor文で記述できるし、逆に、for文で記述できるコードはwhile文で記述できる。では、なぜwhile文が存在するのか。それは、コードの見やすさに違いがあるためである。

以下のコードは「1回目、2回目、3回目」と出力するのをfor文とwhile文を使って実装したものである。両方とも同じ処理を実行できたが、コードとしてどちらが見やすいと感じただろうか。

コーディング作業に慣れた人にとってはカウンタ変数の扱い(初期化、、継続条件、インクリメント)が1行にまとまっているfor文のほうが見やすいと感じる。また、while文は頑張ればもう少しコーディングの行数を減らせるが、カウンタ変数の扱いが別の行に分散しているのは見にくいと感じることが多い。

よって、決められた回数ループをするような処理ではfor文を使った方がスマートとなる。

 

一方、以下のコードはループ内で0~2のランダム整数を発生させ、2の場合に変数の値をインクリメントし、変数の値が3以下のあいだループを繰り返す処理である。

for文とwhile文でコーディング行数に違いは無いが、for文には余計なセミコロン「;」があり見にくいと感じる。このようにループ回数は定まってなくて、ループ内の処理によってカウンタ変数やループ継続条件を制御する処理ではwhile文を使った方がスマートになる。

 

break, continue

for文でも使えるが、while文ではbreakcontinueがよく使われる。

breakはループを中断してループの外に抜ける命令。continueはループの先頭に飛んでループを再開する命令である。

以下のコードはwhile文の中で0から4のランダム整数を発生させ、2の場合はループを中断し、1の場合はループの先頭に戻ってループを再開、それ以外は回数を画面に出力する記述例である。

 

repeat-while文

通常のwhile文はループ継続条件をチェックしたあとにループに入るので、ループ継続条件を満たさない場合は1回もループ内の処理が行われずにループを抜ける。しかし、いかなる場合も必ず1回はループ内の処理をさせたいときがある。そんな時はrepeat-while文を利用する。

以下のように、whileを末尾に移動した書き方になる。Swift2.0以前ではdo-while文で記述していたが、例外処理のdo-catch文との混合を避けるためrepeat-whle文に変更された。

 

以下のコードは、回数を出力し、ランダム整数値が2の場合ループを抜けるコード例である。最初の1回目は必ずループ内の処理が行われる。