官术网_书友最值得收藏!

Working with ranges

Ranges come in two flavors: Range and ClosedRange. The difference between Range and ClosedRange is the inclusion of the upper bound. In a ClosedRange, the upper bound is included; in Range, it isn't.

If you want to include all numbers between 0 and 10, not including 10, you can represent it in two ways, as follows:

let range1 = 0..<10
let range2 = 0...9

range1.contains(10) // false

The two ranges are equivalent, and they contain the same numbers. They read differently and carry different meanings, however depending on what you want to express, you may want to pick one over the other. Ranges work with the Comparable protocol, which means that any type that conforms to this Comparable protocol is suited for creating ranges.

For example, you could create a Range type of Strings, as follows:

let uppercased = "A"..."Z"
uppercased.contains("C") // true
uppercased.contains("c") // false

You can also use the ~= operator, which is an alias for the contains method:

uppercased ~= "Z" // true
主站蜘蛛池模板: 绥棱县| 鹤山市| 措美县| 长宁区| 临城县| 黎城县| 通城县| 隆昌县| 曲水县| 扶绥县| 上饶县| 岐山县| 河南省| 茂名市| 张北县| 高雄县| 绥棱县| 兴城市| 吴堡县| 纳雍县| 兴海县| 军事| 蒲城县| 枞阳县| 永康市| 灵石县| 新郑市| 固镇县| 丰镇市| 林口县| 喜德县| 潞城市| 黑龙江省| 祥云县| 中卫市| 东明县| 嘉定区| 安国市| 台北县| 普兰店市| 苏州市|