我知道范围有3种类型:范围,步幅和间隔。
var closed:ClosedInterval = 1.2...5.0 var half_open:HalfOpenInterval = 1.2..<5.0
快速间隔是多少?以及它们使用的一个例子是什么?
http://zh.wikipedia.org/wiki/间隔(数学)
编辑:这就是beta 5 xcode 6发行说明所说的:
•可比较值的间隔,可以有效地检查是否包含。间隔用于switch语句中的模式匹配,并由〜=运算符使用。
从Swift 3(使用Xcode 8)开始,Interval类型不再存在。现在,Range<T>类型族包括以前的范围和间隔类型的功能,并且还符合用于收集类型和索引的新模型。
Interval
Range<T>
在Swift 2.x和更早的版本中…范围用于迭代,间隔用于模式匹配。
func testNum(num: Int) { let interval: HalfOpenInterval = 0..<10 let range = 10..<20 switch num { case interval: // this works break case range: // error "does not conform to protocol IntervalType" break default: break } }
对Range类型进行了优化,以生成在整个范围内递增的值,并且可以使用可以计数和递增的类型。
Range
一种Interval类型是用于测试是否区间内的给定值位于最优化。它适用于不一定需要递增概念的类型,并提供诸如将一个范围限制到另一个范围(例如(0..<10).clamp(5..<15)yield 5..<10)之类的操作,这些操作对于复杂的模式匹配很有用。
(0..<10).clamp(5..<15)
5..<10
因为..<和...运算符分别具有两种形式-一种返回a Range,另一种返回Interval--type推断会根据上下文自动使用正确的一种。因此,如果您编写语句0..<10的case标签switch,Swift会自动构造一个,HalfOpenInterval因为switch语句需要一种Interval类型。
..<
...
0..<10
case
switch
HalfOpenInterval
该~=运营商是一个办法做到在一个区间一个测试没有一个switch说法。写作interval ~= value等同于interval.contains(value)。
~=
interval ~= value
interval.contains(value)
值得注意的是,您可以通过查看标准库接口及其注释来发现许多这些问题:像HalfOpenInterval在操场上一样写一个类型名称,然后单击命令以跳至其定义。