Swift で stride() を使って for ループする

Swift でコードを繰り返し実行する(ループする)には、for-in・while・repeat-while 文が使えます。

Swift の基本的な for-in 文の使い方については「Swift の for ループ」でご説明しました。


for-in 文で数値の範囲を指定してループするには、... などの範囲演算子を使います。

例えば、1 ~ 5 までループしたい時は次のような感じでループできます。

for i in 1...5 {
    print("i = \(i)")
}

[実行結果]

i = 1
i = 2
i = 3
i = 4
i = 5

Swift で stride() を使って for ループする 1


この方法では、ループするたびに i が 1 ずつ増えましたが、stride() 関数を使うと、もっとループの制御をすることができます。

stride() 関数の構文は二つあって、ひとつめの stride(from:to:by:) は次のように使えます。

for 変数 in stride(from: スタート値, to: エンド値, by: ステップ量) {
    // 反復するコード
}

from のスタート値はループで実行される最初の値です。

to のエンド値の直前までループしますが、エンド値はループに含まれません。

by のステップ量は、ループする際に加算されていく値です。マイナスの値が設定された時はループするたびに値が小さくなっていきます。


from と by の値によりますが、ループしてちょうど値がエンド値になる場合は、エンド値も含んでループしたい時は stride(from:through:by:) を使います。

for 変数 in stride(from: スタート値, through: エンド値, by: ステップ量) {
    // 反復するコード
}

エンド値の扱い方以外は stride(from:to:by:) と同じです。


例えば、stride() 関数を使って、0 から 5 未満を 0.5 のステップ量でループしたい時は次のようにできます。

for i in stride(from: 0, to: 5, by: 0.5) {
    print("i = \(i)")
}

実行結果は次のようになります。0 から 0.5 ずつ増えながら print 文が 10 回実行されています。

i が 5 になった時は実行されずにループを抜けているのがわかります。

i = 0.0
i = 0.5
i = 1.0
i = 1.5
i = 2.0
i = 2.5
i = 3.0
i = 3.5
i = 4.0
i = 4.5

Swift で stride() を使って for ループする 2


5 まで含めてループしたい時は to を through に変更します。

for i in stride(from: 0, through: 5, by: 0.5) {
    print("i = \(i)")
}

実行結果は次のようになります。i = 5 の時も実行されていますね。

i = 0.0
i = 0.5
i = 1.0
i = 1.5
i = 2.0
i = 2.5
i = 3.0
i = 3.5
i = 4.0
i = 4.5
i = 5.0

Swift で stride() を使って for ループする 3


以上、Swift で stride() を使って for ループする方法をご説明しました。

© 2024 iOS 開発入門