Swift 入門 | 制御構文 | while 文による繰り返し
for 文には、繰り返すたびに値を変化させる仕組みが構文に含まれている。一方、条件を確認し、処理を繰り返すかどうかだけを決める、より単純な繰り返し構文もある。それが while 文である。
while 文には、条件を記述する位置によって 2 つの書き方がある。後者は do while 文とも呼ばれる。
while の基本形
while 条件 {
... 繰り返し処理 ...
}
do while の基本形
do {
... 繰り返し処理 ...
} while 条件
while の後に条件を記述する。条件が true なら繰り返しを実行し、false になるとループを抜ける。
単純な処理なのに、なぜ 2 つの書き方があるのだろうか。違いは条件を確認するタイミングにある。前者のように構文の先頭に while がある場合は、最初に while の後にある条件を確認し、それが true なら {} の中を実行する。
後者のように構文の末尾に while がある場合は、繰り返し処理を行う {} の中を先に実行し、終わってから条件を確認する。そのため、最初から条件が false であっても、{} の中は必ず 1 回実行される。
次の単純な繰り返しを比較してみよう。
var n:Int = 0
while 10 > n++ {
"index:" + String(n)
}
var m:Int = 0
do {
"index:" + String(m)
} while 10 > m++
前者では index:1 から index:10 までの値を得られる。後者では index:0 から index:9 までの値になる。条件式の中で ++ により変数を増加させているため、条件が前にあるか後にあるかによって値が異なる。
このように、細かな動作を見ると両者には違いがある。基本的には while を使い、do while は必要な事情がある場合にだけ使うと考えておくとよい。