こんにちは!フリーエンジニアのヤマシタです。
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の使い方を忘れてしまったら、この記事を思い出してくださいね。