【Swift/SwiftUI】範囲型データの使い方

本記事では、for文やwhile文などで使用する場面の多い範囲型データを紹介しつつ、使い方について解説していきます。

範囲型データとは

範囲型データは、数値や文字列などの連続するデータ範囲を表すデータ型です。

連続したデータ型とは、数値であれば0〜100など、文字列であればA〜Zなどの繋がりのある値を示します。

for文やwhile文などの繰り返し処理の条件に利用したり、範囲内からのデータ抽出などを行う際に便利に使用できるデータ型です。

範囲型データ一覧

以降では、範囲の開始と終了を指定する範囲型データと、範囲の開始か終了のどちらか一方のみを指定する片側範囲型データについてそれぞれ解説していきます。

A…B

初期値AからBまでの値の範囲を表します。1…5というデータであれば、末尾の5を含んだ「1,2,3,4,5」が範囲となります。表現としては、A以上B以下の範囲を示す値です。

このデータ型はfor文のループなどで使用することができ、明示的に何番目から何番目まで使用したいと決まっている時に便利なデータです。

for i in 1...5 {
    print(i)
}
実行結果:
1
2
3
4
5

A..<B

初期値AからBの手前の値までの範囲を表すデータ型です。1..<5であれば、末尾の5を含まない「1,2,3,4」がこのデータに含まれ、1以上5未満と表現できます。

このデータ型は、配列などのインデックス番号などが振られているデータに対して、インデックス番号を参照してループで処理を行う際に使用されることがあります。

以下の例で要素数が5件の配列に対してループで処理を行う際には、先頭のインデックス0番目の要素から末尾の要素であるインデックス4番目の要素までを取得することができます。

for i in 0..<5 {
    print(i)
}
実行結果:
0
1
2
3
4

A…

初期値A以上の全ての値を含む範囲を示すデータ型です。範囲にはAも含まれます。

主に配列でインデックス番号を指定して、指定した値以降の要素を全て取得したい場合などに使用できます。

例では、配列numbersに「2…」を指定しているため、インデックス番号2の50以降の要素が全て返却されています。

var numbers = [1, 10, 50, 100, 1000]
print(numbers[2...])
//実行結果: [50, 100, 1000]

…B

先頭から末尾のBまでの値を全て含む範囲を示すデータ型です。Bも含まれます。

配列numbersに「…3」を指定しているため、先頭のインデックス番号0からインデックス番号3の100までの要素が全て返却されます。

var numbers = [1, 10, 50, 100, 1000]
print(numbers[..3])
//実行結果: [1, 10, 50, 100]

..<B

先頭から末尾のBの手前までの値を全て含む範囲を示すデータ型です。Bはこの範囲に含まれません。

配列numbersに「..<3」を指定しているため、先頭のインデックス番号0からインデックス番号2の50までの要素が全て返却されます。

var numbers = [1, 10, 50, 100, 1000]
print(numbers[..3])
//実行結果: [1, 10, 50]

最後に

本記事では、範囲型データと片側範囲型データの使い方と使える場面について解説してきました。

範囲型のデータは、配列などの要素が際限なく増えていく場合などでも決まった範囲の値のみを固定で取得する場合などに使用できる機能になります。

他にもSwiftで開発を行う際に欠かすことのできないオプショナル型データについて、安全にアンラップを行う方法や暗黙的オプショナル型というデータ型についても別の記事で解説していますのでそちらもご確認ください。