【Swift】ネスト

ネストとは”入れ子”という意味で、ネスティングとも言います。
例えばfor文の中にfor文、if文の中にif文、for文の中にif文などを入れ子することをネストすると言います。

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

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

前回は 複合代入演算子 について書きました。

今回は ネスト について書いていこうと思います。

ネストとは

ネストとは”入れ子”という意味で、ネスティングとも言います。
例えば for文 の中に for文if文 の中に if文for文 の中に if文 などを入れ子することをネストすると言います。

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

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

for文の中にfor文

for文 の中に for文 をネストする例

//for文の中にfor文をネスト
for i in 0 ... 2 {
    for j in 0 ... 2 {
        print(i, j) //iとjに代入されている値をprintするだけの処理
    }
}

//実行結果
/*
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2
 */


ij に代入されている値を print するだけの処理です。
は終了値を含む範囲演算子なので上の例だと最初の for文 も中の for文 も、 0,1,2 と、3 回繰り返します。

範囲演算子 についてはこちらで紹介しています。

※コードが流れていく順番
最初 for文i0 が代入されて中の for文 に進む

中の for文 が、0,1,2 と 3 回処理が繰り返される

最初の for文 に戻って次は 1 が代入されて中の for文 に進む

また中の for文 が、0,1,2 と 3 回処理が繰り返される

最初の for文 に戻って次は 2 が代入されて中の for文 に進む

また中の for文 が、0,1,2 と 3 回処理が繰り返される

最初の for文3 回目まで繰り返したので for文 から抜ける
という順番でコードが流れていきます。

nestコードimg

for文の中にif文

for文 の中に if文 をネストする例

//for文の中にif文をネスト
for i in 1 ... 10 {
    if i % 2 == 0 {
        print(i)
    }
}

//実行結果
/*
2
4
6
8
10
 */

for文 を 10 回繰り返して、もし i の値が偶数の値だった場合に printi の値を出力するというコードです。

if文 の条件式は i%2==0 となっています。
これは、もし i の値を 2 で割った余りが 0 だったら true なので、i の値を print で出力します。
余りが 0 じゃないということは奇数なので false となり、その場合 if文 はスキップされます。
==!= に変えると奇数のみの出力になります。

nestコードimg2


あまり多重にネストするとエラーの原因や、思った通りの処理にならなかったり可読性も下がりそうなので、使う時はよく考えて注意しながら使う必要がありそうです。
以上 ネスト についてでした。

次回は スコープ について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

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