よく使うforループのfor i in a..<b { }
のa..<b
の部分って何だろう?
参考Webページ(1)を見ると、これはRange<Bound>
という構造体らしい。Int型の場合はCountableRangeで少し違うみたいだけど(2)。..<
を使ってインスタンス化できるのは、配列のArray構造体が[ ]
で作れるのと同じように、シンタックスシュガーのようだ。
ちなみにa...b
はClosedRangeといい、閉区間を表す(3)。
Rangeを変数に代入
こういうことができる。
let closedRange = 0...12
print(closedRange.contains(5))
日付のrange
このページで一番言いたいことは、Date型でもrangeが作れてとても便利ということ。例えば、startDate,endDate,dateの3つの変数があった時に、dateがstartDateとendDateの間の区間に含まれているか判定するコードは、次のように書ける。
let range = startDate..<endDate
if range.contains(date) { }
日付のrangeについては(4)のwebページにあるサンプルコードがわかりやすかった。
参考Webページ