見出し画像

[Swift]for-in文のさまざまな使い方【基本/終点も含んで繰り返す/ループのたびにi += n回ずつ増やす】

Swiftにおけるfor文ことfor-in文は他の言語と比較して少し特殊な構文をしています。

例えば下記のようなケースにおいて、

例題:要素数のわからない配列arrayの要素の数だけループするfor文を記述しなさい

javaであれば

for(int i = 0; i < array.length; i++){

}

と記述するところをSwiftでは

for(i in 0 ..< array.count){

}

と記述したりします。

javaは基本構文のパラメータを若干変えるだけで幅広いケースに対応できるのですが、Swiftは一筋縄ではいきません。今回はSwiftにおけるforループのtipsみたいなのを紹介しようと思います。

基本

//i 〜 arrayの要素分だけ繰り返す
for(i in 0 ..< array.count){

}

終点も含んで繰り返す

稀に、要素数を変えることをせずに、検索を開始するインデックスを1からforループを回したいと思うことがあります。

// ..< ではなく ...と記述する
for(i in 1 ... array.count){
  
}

..< ではなく …と記述することで、終点(終値)を含んで検索することができます。注意しないといけないのは「0 … array.count」とか「 1 ..< array.count」とか「1 … array.count+1」と記述しないようにしましょう。要素数が違うので「Index Out Of Range」エラーに苦しめられることになります。

ループのたびにi += n回ずつ増やす

javaだと

for(int i = 0; i < array.length; i++){

}

と記述しますが、この「i++」を変えることで例えば「i+=2」で2ずつ増やすことができます。

あまり知られていませんが、これ。Swiftでも実現できます。

for i in stride(from:0, to:array.count, by:2) {
    //0〜array.countまで2ずつ要素を増やす
}

stride(from: to: by:)構文を使うことで、表現をすることができます。


この記事が気に入ったらサポートをしてみませんか?