PartialRangeFrom
声明
@frozen struct PartialRangeFrom<Bound> where Bound : Comparable
概述
您可以使用后缀范围运算符(后缀 ...
)创建 PartialRangeFrom
实例。
let atLeastFive = 5...
您可以使用部分范围来快速检查某个值是否包含在特定的值范围内。例如:
atLeastFive.contains(4)
// false
atLeastFive.contains(5)
// true
atLeastFive.contains(6)
// true
您可以使用集合索引的部分范围来表示从部分范围的下限到集合末尾的范围。
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[3...])
// Prints "[40, 50, 60, 70]"
使用部分范围作为序列
当部分范围使用整数作为其下限和上限,或任何其他符合 Strideable
协议且具有整数步长的类型时,您可以在 for
- in
循环中或任何序列方法中使用该范围这不需要序列是有限的。部分范围的元素是从其下限无限向上连续的连续值。
func isTheMagicNumber(_ x: Int) -> Bool {
return x == 3
}
for x in 1... {
if isTheMagicNumber(x) {
print("\(x) is the magic number!")
break
} else {
print("\(x) wasn't it...")
}
}
// "1 wasn't it..."
// "2 wasn't it..."
// "3 is the magic number!"
因为 PartialRangeFrom
序列无限期地向上计数,所以不要将序列与在返回之前读取整个序列的方法一起使用,例如 map(_:)
、 filter(_:)
或 suffix(_:)
。使用对其访问的元素数量设置上限的操作是安全的,例如 prefix(_:)
或 dropFirst(_:)
,并且您可以保证将终止的操作,例如传递您知道最终会返回的闭包 true
到 first(where:)
。
在下面的示例中,asciiTable
序列是通过将 alphabet
字符串中的字符压缩在一起生成的,其中部分范围从 65(大写字母 A 的 ASCII 值)开始。迭代两个压缩序列仅持续两个序列中较短的一个,因此迭代在 alphabet
的末尾停止。
let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
let asciiTable = zip(65..., alphabet)
for (code, letter) in asciiTable {
print(code, letter)
}
// "65 A"
// "66 B"
// "67 C"
// ...
// "89 Y"
// "90 Z"
无限增加的行为由 Bound
的类型决定。例如,当序列的下一个值高于 Int.max
时,迭代 PartialRangeFrom<Int>
陷阱的实例。
可用版本
相关用法
- Swift PartialRangeFrom ~=(_:_:)用法及代码示例
- Swift PartialRangeFrom relative(to:)用法及代码示例
- Swift PartialRangeUpTo relative(to:)用法及代码示例
- Swift PartialRangeUpTo ~=(_:_:)用法及代码示例
- Swift PartialRangeThrough ~=(_:_:)用法及代码示例
- Swift PartialRangeThrough relative(to:)用法及代码示例
- Swift PartialRangeUpTo用法及代码示例
- Swift PartialRangeThrough用法及代码示例
- Swift PrefixSequence contains(where:)用法及代码示例
- Swift PrefixSequence flatMap(_:)用法及代码示例
- Swift PrefixSequence split(separator:maxSplits:omittingEmptySubsequences:)用法及代码示例
- Swift PrefixSequence shuffled()用法及代码示例
- Swift PrefixSequence forEach(_:)用法及代码示例
- Swift PrefixSequence first(where:)用法及代码示例
- Swift PrefixSequence drop(while:)用法及代码示例
- Swift PrefixSequence starts(with:)用法及代码示例
- Swift PrefixSequence dropLast(_:)用法及代码示例
- Swift PrefixSequence reduce(into:_:)用法及代码示例
- Swift PrefixSequence reduce(_:_:)用法及代码示例
- Swift PrefixSequence elementsEqual(_:)用法及代码示例
- Swift PrefixSequence min(by:)用法及代码示例
- Swift PrefixSequence filter(_:)用法及代码示例
- Swift PrefixSequence enumerated()用法及代码示例
- Swift PrefixSequence shuffled(using:)用法及代码示例
- Swift PlaygroundQuickLook用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 PartialRangeFrom。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。