【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の使い方を忘れてしまったら、この記事を思い出してくださいね。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。