前回は 複合代入演算子 について書きました。
今回は ネスト について書いていこうと思います。
ネストとは
ネストとは”入れ子”という意味で、ネスティングとも言います。
例えば 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
*/
i と j に代入されている値を print するだけの処理です。
… は終了値を含む範囲演算子なので上の例だと最初の for文 も中の for文 も、 0,1,2 と、3 回繰り返します。
範囲演算子 についてはこちらで紹介しています。
※コードが流れていく順番
最初 for文 の i に 0 が代入されて中の 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文 から抜ける
という順番でコードが流れていきます。
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 の値が偶数の値だった場合に print で i の値を出力するというコードです。
if文 の条件式は i%2==0 となっています。
これは、もし i の値を 2 で割った余りが 0 だったら true なので、i の値を print で出力します。
余りが 0 じゃないということは奇数なので false となり、その場合 if文 はスキップされます。
== を != に変えると奇数のみの出力になります。
あまり多重にネストするとエラーの原因や、思った通りの処理にならなかったり可読性も下がりそうなので、使う時はよく考えて注意しながら使う必要がありそうです。
以上 ネスト についてでした。
次回は スコープ について書いていこうと思います。
実行環境
version |
---|
Xcode 14.2 (14C18) |
Swift 5.2.4 |
公式ドキュメント
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/