【Swift入門】Rangeの基本的な使い方を覚えよう!

こんにちは!フリーエンジニアのヤマシタです。

Swiftには評価したい値が指定した範囲内かどうか調べるために、Rangeを使用する方法があります。

この記事では、

・Rangeとは
・Rangeの使い方(閉区間)
・Rangeの使い方(開区間)

というRangeの基本的な解説から、

・条件式で使用する方法
・for文で使用する方法

などの応用的な使い方に関しても解説していきます。

今回はそんなRangeの使い方についてわかりやすく解説します!

※この記事ではSwift4.0を使用しています。

目次

Rangeとは

Rangeとは、主に値の下限と上限の範囲を指定する閉区間「下限…上限」と、不等式を用いて評価を行う開区間「下限..<上限」を指定し、値の評価を行います。

Swift2.2まではRangeは開区間のみの指定でしたが、Swift3.0からは閉区間での使用も可能になりました。

また、Swift2.2まではRangeを使用していましたが、3.0からはClosedRangeIndexという型で構造体が返されます。

CountableClosedRangeのインスタンスを生成するには、以下のように記述します。

書き方1:閉区間

let 変数名 = 下限値…上限値

書き方2:開区間

let 変数名 = 下限値..<上限値

指定した範囲内の値かどうかを調べるにはCountableClosedRangeのオブジェクトに対してcontains()を使用します。

containsは範囲内の値だったらTRUEを返します。

Rangeの基本的な使い方

ここでは実際にRangeの使い方を見ていきましょう。

閉区間

以下に閉区間で下限値と上限値を指定して、値を評価する簡単なサンプルを紹介します。

サンプルプログラム1

let range10 = 0...10

print(range10.contains(0))  // true
print(range10.contains(10)) // true
print(range10.contains(11)) // false
print(range10.contains(7))  // true

実行結果:

true
true
false
true

このサンプルでは開区間で下限0上限10を指定し、containsメソッドで指定した数値が範囲内かどうか確認しています。

値が範囲内の場合はTRUE、範囲外の場合はFALSEを返します。

以下のように小数点以下の範囲も指定できます。

サンプルプログラム2

let range10 = 0.0..<10.0

print(range10.contains(9.32))  // true
print(range10.contains(10.2))  // false
print(range10.contains(3.0))   // true

実行結果:

true
false
true

開区間

続けて、開区間で範囲を指定して、値を評価する簡単なサンプルを紹介します。

サンプルプログラム

let range10 = 1..<10

print(range10.contains(0))  // false
print(range10.contains(10)) // false
print(range10.contains(11)) // false
print(range10.contains(7))  // true

実行結果:

false
false
false
true

このサンプルでは開区間で1..<10(1~9の範囲)を指定し、数値が範囲内かどうか確認しています。

条件式で使用する

Rangeで範囲を指定して条件式で使用することもできます。

以下にif文の条件式で範囲を指定するサンプルを紹介します。

サンプルプログラム

var range10 : ((Int) -> Bool)
range10 = { (num: Int) -> Bool in 

  //範囲を指定して値を評価
  if 0...10 ~= num {
    return true
  }
  return false
    
}
 
print(range10(5));
print(range10(12));
print(range10(7));

実行結果:

true
false
true

上記のサンプルでは、

① クロージャの引数に評価する値を指定
② クロージャの中のif文の条件式で閉区間で範囲を指定
③ 値が範囲内(0以上10以下)の場合はtrueを返却

の流れになります。

クロージャの詳しい使い方については、以下の記事解説しています!

for文で使用する

for文の条件式でRangeを使用することもできます。

以下に0~10の範囲を指定してfor文を実行するサンプルを紹介します。

サンプルプログラム

for i in 0...10 {
    print(i)
}

実行結果:

0
1
2
3
4
5
6
7
8
9
10

このようにRangeで範囲を指定することでも簡単にfor文が使用のループ処理が可能なことがわかりますね!

for文については以下の記事でも詳しく解説していますので、ぜひ参考にしてくださいね!

まとめ

ここではRangeについて、

・Rangeとは
・Rangeの使い方(閉区間)
・Rangeの使い方(開区間)
・条件式で使用する方法
・for文で使用する方法

などについて解説しました。

Rangeを使用すれば、さまざまな処理で閉区間、開区間を指定した値の評価を行うことが可能です。

もし、Rangeの使い方を忘れてしまったら、この記事を思い出してくださいね。

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次