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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。