【Swift】break文とcontinue文

break文 とは、for文 や switch文 などのループ処理を中断する事ができる構文です。
基本的には if文 などと併用して条件を付けて使います。
ループ中に、もし指定した条件を満たしたらループを中断して、次の処理に移りたい時などに使います。

前回は 集合型 について書きました。

今回は break文 と continue文 について書いていこうと思います。

break文

break文 とは

break文 とは、for文switch文 などのループ処理を中断する事ができる構文です。
基本的には if文 などと併用して条件を付けて使います。
ループ中に、もし指定した条件を満たしたらループを中断して、次の処理に移りたい時などに使います。

for文 についてはこちらの記事で紹介しています。 

if文 についてはこちらの記事で紹介しています。

break文 の使い方

使い方は break と書くだけです。

break

break文 を使った例

let slot = [145, 214, 405, 315, 777, 343]

for i in 0 ..< 20 {
    let stop = slot.randomElement()
    print("\(i)回転目 : \(stop ?? 123)")
    
    if stop == 777 {
        print("大当たり!")
        break
    }
}

//実行結果
/*
0回転目 : 315
1回転目 : 315
2回転目 : 343
3回転目 : 315
4回転目 : 145
5回転目 : 145
6回転目 : 315
7回転目 : 214
8回転目 : 405
9回転目 : 777
大当たり!
*/

配列slot に 3 桁の整数を要素として複数代入しています。
for文 は最大 20 回ループするようにしました。
処理は 配列slot の要素をランダムに取り出して、取り出した値を 定数stop に代入します。
print( ) で何回目のループなのかと 定数stop に代入された値を出力します。
if文 で、もし 定数stop に代入された値が 777 だったら、print( )”大当たり!” と出力して、break で中断します。
for文 は 20 回としていますが、20 回ループする前に 777 が選択されたら途中でも for文 を中断します。
また、777 が選択されなければ 20 回ループして for文 を中断します。

randomElement( ) メソッドはコレクション型の要素をランダムに返すメソッドです。返ってくる値は Optional型 なのでアンラップして print( ) で出力しています。

Optional型 についてはこちらの記事で紹介しています。

break-continueコードimg

continue文

continue文とは

continue文 とは、continue と書いた後の処理をスキップする事ができる構文です。
break文 はループ自体を中断して次の処理に移行しますが、continue文 は次回のループ処理に移行する。という違いがあります。
break文 同様 continue文 も条件を付けて使う場合が多いので、if文 などと併用することが多いと思います。

continue文 の使い方

使い方は continue と書くだけです。

continue

continue文 を使った例

上の break文 のコード例を流用

let slot = [145, 214, 405, 315, 777, 343]

for i in 0 ..< 20 {
    let stop = slot.randomElement()
    if stop == 777 {
        print("jackpot!")
        continue
    }
    print("\(i)回転目 : \(stop ?? 123)")
}

//実行結果
/*
0回転目 : 214
1回転目 : 405
2回転目 : 405
3回転目 : 315
4回転目 : 214
jackpot!
6回転目 : 214
7回転目 : 315
8回転目 : 405
9回転目 : 315
10回転目 : 343
11回転目 : 343
12回転目 : 343
13回転目 : 405
jackpot!
15回転目 : 145
16回転目 : 405
17回転目 : 343
18回転目 : 145
19回転目 : 343
*/

for文 は 20 回ループ、処理は 配列slot の要素をランダムに取り出して、取り出した値を 定数stop に代入します。
もし 定数stop に代入された値が 777 だったら、jackpot! と出力し continue して、一番下の print( ) はスキップして次回のループに移行します。
777 以外であれば if文 の条件から外れているので、if文 はスキップされて 一番下の print( ) で何回目のループなのかと 定数stop に代入された値を出力します。
つまり、777 だった時のみ continue して次回のループに、それ以外は continue されずに回転数と値を出力する、という流れになります。

break文break と書かれた後 for文 自体を中断してループを抜けてしまいますが、
continue文continue と書かれた後の処理をスキップするだけなので、for文 は指定通り20 回ループされています。

break-continueコードimg2

以上 break文 と continue文 についてでした。

次回は guard文 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/

【Swift】while文

while文とはループ処理をすることができる構文です。
前の記事で書いたfor文もループ処理をすることができる構文ですが、
for文はループさせる回数を指定するのに対し、while文は条件から外れるまでループさせる構文で、条件式がtrueの間はループさせ続けることができます。
何回繰り返すか未定のときなどに使います。

前回は Optional型 について書きました。

今回は while文 について書いていこうと思います。

while文とは

while文 とはループ処理をすることができる構文です。
前の記事で書いた for文 もループ処理をすることができる構文ですが、
for文 はループさせる回数を指定するのに対し、while文 は条件から外れるまでループさせる構文で、条件式が true の間はループさせ続けることができます。
何回繰り返すか未定のときなどに使います。

for文 についてはこちらの記事で紹介しています。

while文の書式

 while 条件式(Bool値) {
     処理
 }

while文 は頭に while キーワードを付けます。
条件式( Bool値 )のところには、論理演算子や比較演算子などを使って条件式を書いて { } の中にループさせたい処理を書きます。
条件式が true の間はループし続けるので、処理のところにループを抜ける処理を書くか、条件式にループが終わるように指定しないと無限にループしてしまうので注意が必要です。

論理演算子についてはこちらの記事で紹介しています。

比較演算子についてはこちらの記事で紹介しています。

while文を使った例

0 ~ 9 回目まで同じ処理をループさせる例

var a = 0
while a < 10 {
    print(a)
    a += 1
}

//実行結果
/*
0
1
2
3
4
5
6
7
8
9
*/

0 を代入した 変数 a を準備して、a の値が 10 より小さければ( 10 は含まない ) a の値を print して、a をインクリメントします。
a の値が 10 より大きくなったら( 10 を含む ) while文 を抜けるようにしました。
0 ~ 9 回目までは true なので 9 回目まではループされますが、10 回目は条件式から外れてfalse となるので、while文を抜けます。

※ ループから抜けるように条件式や処理を書かないと無限にループしてしまいます。

同じ処理を for文 で書いてみる

上の while文 と同じ処理を for文 で書くと、

for i in 0 ..< 10 {
    print(i)
}

//実行結果
/*
0
1
2
3
4
5
6
7
8
9
*/

結果は同じですが、while文 は条件式が true の間はループし続けるのに対し、for文 は回数( 範囲 )を指定してループさせるというところに違いがあります。

whileコードimg

repeat-while文

while文との違い

while文 は条件式を先に判定してから true であれば false になるまで処理がループされますが、
repeat-while文 は、先に処理を実行した後に、条件式を判定する。という違いがあります。
後に条件式が判定されるので、判定が true だろうが false だろうが最低でも 1 回は処理が実行されます。

repeat-while文の書式

 repeat {
     処理
 } while 条件式(Bool値)

repeat-while文 は頭に repeat キーワードを付けます。
{ } の中に処理を書いて、閉じかっこ } の後に while キーワードを書いて条件式を書きます。
先に処理、その後条件式の判定なので最低でも 1 回は処理が実行されます。

repeat-while文を使った例

条件式が true だった場合の例

var t = 0
repeat {
    print(t)
    t += 1
} while t < 10

//実行結果
/*
0
1
2
3
4
5
6
7
9
*/

repeat文 の処理が実行された後に、while文の条件式が判定されます。
条件式が false になるまでループします。

条件式が false だった場合の例

var f = 0
repeat {
    print(f)
    f += 1
} while f > 10

//実行結果
/*
0
*/

これは while文 の条件式が false なのでループはしませんが、条件式の判定よりも先に repeat文 の処理が実行されます。
その後に、条件式の判定で false となりrepeat-while文 から抜けます。
なので処理は最初の 1 回目だけ実行されてループから抜けます。

whileコードimg2

ループ処理といえば for文 を使うことが多いと思いますが、ループ処理したいけど何回ループさせるか未定の場合は while文 が適していると思います。
以上 while文 についてでした。

次回は 辞書型 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/