实例方法
partition(by:)
对集合的元素重新排序,使得与给定谓词匹配的所有元素都在所有不匹配的元素之后。
声明
mutating func partition(by belongsInSecondPartition: (Self.Element) throws -> Bool) rethrows -> Self.Index
返回值
重新排序的集合中与 belongsInSecondPartition
匹配的第一个元素的索引。如果集合中没有元素匹配 belongsInSecondPartition
,则返回的索引等于集合的 endIndex
。
参数
belongsInSecondPartition
用于对集合进行分区的谓词。所有满足这个谓词的元素都排在所有不满足它的元素之后。
详述
对集合进行分区后,有一个枢轴索引 p
,其中 p
之前的任何元素都不满足 belongsInSecondPartition
谓词,而 p
或之后的每个元素都满足 belongsInSecondPartition
。此操作不能保证稳定,因此分区内元素的相对顺序可能会发生变化。
在以下示例中,数字数组由匹配大于 30 的元素的谓词进行分区。
var numbers = [30, 40, 20, 30, 30, 60, 10]
let p = numbers.partition(by: { $0 > 30 })
// p == 5
// numbers == [30, 10, 20, 30, 30, 60, 40]
numbers
数组现在排列在两个分区中。第一个分区 numbers[..<p]
由不大于 30 的元素组成。第二个分区 numbers[p...]
由 are
大于 30 的元素组成。
let first = numbers[..<p]
// first == [30, 10, 20, 30, 30]
let second = numbers[p...]
// second == [60, 40]
请注意,两个分区中元素的顺序发生了变化。也就是说,40
在原始集合中出现在 60
之前,但是在调用 partition(by:)
之后,60
出现在 40
之前。
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift Slice prefix(upTo:)用法及代码示例
- Swift Slice prefix(_:)用法及代码示例
- Swift Slice prefix(through:)用法及代码示例
- Swift Slice endIndex用法及代码示例
- Swift Slice reduce(into:_:)用法及代码示例
- Swift Slice contains(_:)用法及代码示例
- Swift Slice removeAll(where:)用法及代码示例
- Swift Slice +(_:_:)用法及代码示例
- Swift Slice lastIndex(where:)用法及代码示例
- Swift Slice removeFirst()用法及代码示例
- Swift Slice suffix(_:)用法及代码示例
- Swift Slice starts(with:)用法及代码示例
- Swift Slice reduce(_:_:)用法及代码示例
- Swift Slice insert(_:at:)用法及代码示例
- Swift Slice isEmpty用法及代码示例
- Swift Slice sorted()用法及代码示例
- Swift Slice split(separator:maxSplits:omittingEmptySubsequences:)用法及代码示例
- Swift Slice dropLast(_:)用法及代码示例
- Swift Slice sorted(by:)用法及代码示例
- Swift Slice last(where:)用法及代码示例
- Swift Slice joined(separator:)用法及代码示例
- Swift Slice base用法及代码示例
- Swift Slice enumerated()用法及代码示例
- Swift Slice insert(contentsOf:at:)用法及代码示例
- Swift Slice shuffle(using:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Slice partition(by:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。