Swift 中的Range类型和 Range运算符

Swift中有五个最常用的Range类型:
• ClosedRange: a…b
• Range a…<b
• PartialRangeThrough: …b
• PartialRangeFrom: a…
• PartialRangeUpTo: …<b

对应的,有五个Range运算符,用来定义上面的Range类型
• Closed Range Operator: a…b
• Half-Open Range Operator: a…<b
• Prefix Closed Range Operator: …b
• Postfix Closed Range Operator: a…
• Prefix Half-Open Range Operator: …<b

ClosedRange

ClosedRange类型代表一个闭区间 [a, b]
其声明是:

struct ClosedRange<Bound> where Bound : Comparable

我们可以用 closed range operator (a…b) 创造一个ClosedRange实例

let closedRange: ClosedRange<Double> = 1.2...6.3

我们可以检查一个值是否在一个ClosedRange范围内

closedRange.contains(3.6)
// true

如果一个ClosedRange用整数作为其边界,我们可以把它用在for-in loop中

for i in -12 {
    print(i)
}
// -1
// 0
// 1
// 2

Range

Range类型代表一个右半开区间 [a, b),注意这里只能是右边开区间,左边必须是闭区间
其声明是:

struct Range<Bound> where Bound : Comparable

我们可以用 half-open range operator (a…<b)创造一个Range实例

let range: range<Double> = 1.2..<6.3

我们可以检查一个值是否在一个Range范围内

range.contains(3.6)
// true
range.contains(6.3)
// false, 因为上界是开区间

如果一个Range用整数作为其边界,我们可以把它用在for-in loop中

for i in -1..<2 {
    print(i)
}
// -1
// 0
// 1

PartialRangeThrough

PartialRangeThrough 类型代表一个左边界无穷的闭区间 (-infinite, b]
其声明是:

struct PartialRangeThrough<Bound> where Bound : Comparable

我们可以用 prefix closed range operator (…b)创造一个PartialRangeThrough实例

let partialRangeThrough: PartialRangeThrough<Double> =6.3

我们可以检查一个值是否在一个partialRangeThrough范围内

partialRangeThrough.contains(3.6)
// true
partialRangeThrough.contains(6.3)
// true

如果一个PartialRangeThrough用整数作为其边界,我们可以用它代表一个 collection 类型的索引 (从 0 到上边界)

let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[...3])
// [10, 20, 30, 40]

PartialRangeFrom

PartialRangeFrom 类型代表一个右边界无穷的闭区间 [a, +infinite)
其声明是:

struct PartialRangeFrom<Bound> where Bound : Comparable

我们可以用 postfix closed range operator (a…)创造一个PartialRangeFrom实例

let partialRangeFrom: PartialRangeFrom<Double> = 1.2

我们可以检查一个值是否在一个PartialRangeFrom范围内

partialRangeFrom(1.2)
// true
partialRangeFrom(6.3)
// true

如果一个PartialRangeFrom用整数作为其边界,我们可以用它代表一个 collection 类型的索引 (从下边界到结束)

let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[3])
// [40, 50, 60, 70]

PartialRangeUpTo

PartialRangeUpTo 类型代表一个左边界无穷的开区间 (-infinite, b)
其声明是:

struct PartialRangeUpTo<Bound> where Bound : Comparable

我们可以用 prefix half-open range operator (…<b)创造一个PartialRangeUpTo实例

let partialRangeUpTo: PartialRangeUpTo<Double> = ..<6.3

我们可以检查一个值是否在一个PartialRangeUpTo范围内

partialRangeUpTo(1.2)
// true
partialRangeUpTo(6.3)
// false, 因为上界是开区间

如果一个PartialRangeUpTo用整数作为其边界,我们可以用它代表一个 collection 类型的索引 (从0到上边界-1)

let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// [10, 20, 30]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值