CollectionDifference
A collection of insertions and removals that describe the difference between two ordered collection states.
- iOS 13.0+
- macOS 10.15+
- tvOS 13.0+
- watchOS 6.0+
struct CollectionDifference<ChangeElement>
A collection of insertions and removals that describe the difference between two ordered collection states.
struct CollectionDifference<ChangeElement>
typealias Element
A type representing the sequence’s elements.
init?<Changes>(Changes)
Creates a new collection difference from a collection of changes.
init(from: Decoder) throws
Creates a new instance by decoding from the given decoder.
subscript<R>(R) -> Self.SubSequence
Accesses the contiguous subrange of the collection’s elements specified by a range expression.
subscript(Range<Self.Index>) -> Slice<Self>
Accesses a contiguous subrange of the collection’s elements.
subscript((UnboundedRange_) -> ()) -> Self.SubSequence
subscript(CollectionDifference<ChangeElement>.Index) -> CollectionDifference<ChangeElement>.Element
Accesses the element at the specified position.
var count: Int
The number of elements in the collection.
var endIndex: CollectionDifference<ChangeElement>.Index
The collection’s “past the end” position—that is, the position one greater than the last valid subscript argument.
var first: Self.Element?
The first element of the collection.
var indices: DefaultIndices<Self>
The indices that are valid for subscripting the collection, in ascending order.
let insertions: [CollectionDifference<ChangeElement>.Change]
The insertions contained by this difference, from lowest offset to highest.
var isEmpty: Bool
A Boolean value indicating whether the collection is empty.
var lazy: LazySequence<Self>
A sequence containing the same elements as this sequence, but on which some operations, such as map
and filter
, are implemented lazily.
let removals: [CollectionDifference<ChangeElement>.Change]
The removals contained by this difference, from lowest offset to highest.
var startIndex: CollectionDifference<ChangeElement>.Index
The position of the first element in a nonempty collection.
var underestimatedCount: Int
A value less than or equal to the number of elements in the collection.
var underestimatedCount: Int
A value less than or equal to the number of elements in the sequence, calculated nondestructively.
func allSatisfy((Self.Element) throws -> Bool) rethrows -> Bool
Returns a Boolean value indicating whether every element of a sequence satisfies a given predicate.
func compactMap<ElementOfResult>((Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]
Returns an array containing the non-nil
results of calling the given transformation with each element of this sequence.
func contains(Self.Element) -> Bool
Returns a Boolean value indicating whether the sequence contains the given element.
func contains(where: (Self.Element) throws -> Bool) rethrows -> Bool
Returns a Boolean value indicating whether the sequence contains an element that satisfies the given predicate.
func distance(from: CollectionDifference<ChangeElement>.Index, to: CollectionDifference<ChangeElement>.Index) -> Int
Returns the distance between two indices.
func drop(while: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence
Returns a subsequence by skipping elements while predicate
returns true
and returning the remaining elements.
func dropFirst(Int) -> Self.SubSequence
Returns a subsequence containing all but the given number of initial elements.
func dropLast(Int) -> Self.SubSequence
Returns a subsequence containing all but the specified number of final elements.
func elementsEqual<OtherSequence>(OtherSequence) -> Bool
Returns a Boolean value indicating whether this sequence and another sequence contain the same elements in the same order.
func elementsEqual<OtherSequence>(OtherSequence, by: (Self.Element, OtherSequence.Element) throws -> Bool) rethrows -> Bool
Returns a Boolean value indicating whether this sequence and another sequence contain equivalent elements in the same order, using the given predicate as the equivalence test.
func enumerated() -> EnumeratedSequence<Self>
Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence.
func filter((Self.Element) throws -> Bool) rethrows -> [Self.Element]
Returns an array containing, in order, the elements of the sequence that satisfy the given predicate.
func first(where: (Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the first element of the sequence that satisfies the given predicate.
func firstIndex(of: Self.Element) -> Self.Index?
Returns the first index where the specified value appears in the collection.
func firstIndex(where: (Self.Element) throws -> Bool) rethrows -> Self.Index?
Returns the first index in which an element of the collection satisfies the given predicate.
func flatMap<SegmentOfResult>((Self.Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element]
Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.
func forEach((Self.Element) throws -> Void) rethrows
Calls the given closure on each element in the sequence in the same order as a for
-in
loop.
func formIndex(inout CollectionDifference<ChangeElement>.Index, offsetBy: Int)
func formIndex(inout Self.Index, offsetBy: Int, limitedBy: Self.Index) -> Bool
Offsets the given index by the specified distance, or so that it equals the given limiting index.
func formIndex(after: inout Self.Index)
Replaces the given index with its successor.
func index(Self.Index, offsetBy: Int) -> Self.Index
Returns an index that is the specified distance from the given index.
func index(Self.Index, offsetBy: Int, limitedBy: Self.Index) -> Self.Index?
Returns an index that is the specified distance from the given index, unless that distance is beyond a given limiting index.
func index(after: CollectionDifference<ChangeElement>.Index) -> CollectionDifference<ChangeElement>.Index
Returns the position immediately after the given index.
func index(before: CollectionDifference<ChangeElement>.Index) -> CollectionDifference<ChangeElement>.Index
func inferringMoves() -> CollectionDifference<ChangeElement>
Returns a new collection difference with associations between individual elements that have been removed and inserted only once.
func inverse() -> CollectionDifference<ChangeElement>
func lexicographicallyPrecedes<OtherSequence>(OtherSequence, by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Bool
Returns a Boolean value indicating whether the sequence precedes another sequence in a lexicographical (dictionary) ordering, using the given predicate to compare elements.
func makeIterator() -> IndexingIterator<Self>
Returns an iterator over the elements of the collection.
func map<T>((Self.Element) throws -> T) rethrows -> [T]
Returns an array containing the results of mapping the given closure over the sequence’s elements.
func map<T>((Self.Element) throws -> T) rethrows -> [T]
Returns an array containing the results of mapping the given closure over the sequence’s elements.
func max(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the maximum element in the sequence, using the given predicate as the comparison between elements.
func min(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?
Returns the minimum element in the sequence, using the given predicate as the comparison between elements.
func prefix(Int) -> Self.SubSequence
Returns a subsequence, up to the specified maximum length, containing the initial elements of the collection.
func prefix(through: Self.Index) -> Self.SubSequence
Returns a subsequence from the start of the collection through the specified position.
func prefix(upTo: Self.Index) -> Self.SubSequence
Returns a subsequence from the start of the collection up to, but not including, the specified position.
func prefix(while: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence
Returns a subsequence containing the initial elements until predicate
returns false
and skipping the remaining elements.
func randomElement() -> Self.Element?
Returns a random element of the collection.
func randomElement<T>(using: inout T) -> Self.Element?
Returns a random element of the collection, using the given generator as a source for randomness.
func reduce<Result>(Result, (Result, Self.Element) throws -> Result) rethrows -> Result
Returns the result of combining the elements of the sequence using the given closure.
func reduce<Result>(into: Result, (inout Result, Self.Element) throws -> ()) rethrows -> Result
Returns the result of combining the elements of the sequence using the given closure.
func reversed() -> [Self.Element]
Returns an array containing the elements of this sequence in reverse order.
func shuffled() -> [Self.Element]
Returns the elements of the sequence, shuffled.
func shuffled<T>(using: inout T) -> [Self.Element]
Returns the elements of the sequence, shuffled using the given generator as a source for randomness.
func sorted(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> [Self.Element]
Returns the elements of the sequence, sorted using the given predicate as the comparison between elements.
func split(maxSplits: Int, omittingEmptySubsequences: Bool, whereSeparator: (Self.Element) throws -> Bool) rethrows -> [Self.SubSequence]
Returns the longest possible subsequences of the collection, in order, that don’t contain elements satisfying the given predicate.
func split(separator: Self.Element, maxSplits: Int, omittingEmptySubsequences: Bool) -> [Self.SubSequence]
Returns the longest possible subsequences of the collection, in order, around elements equal to the given element.
func split(separator: Self.Element, maxSplits: Int, omittingEmptySubsequences: Bool) -> [ArraySlice<Self.Element>]
Returns the longest possible subsequences of the sequence, in order, around elements equal to the given element.
func starts<PossiblePrefix>(with: PossiblePrefix) -> Bool
Returns a Boolean value indicating whether the initial elements of the sequence are the same as the elements in another sequence.
func starts<PossiblePrefix>(with: PossiblePrefix, by: (Self.Element, PossiblePrefix.Element) throws -> Bool) rethrows -> Bool
Returns a Boolean value indicating whether the initial elements of the sequence are equivalent to the elements in another sequence, using the given predicate as the equivalence test.
func suffix(Int) -> Self.SubSequence
Returns a subsequence, up to the given maximum length, containing the final elements of the collection.
func suffix(from: Self.Index) -> Self.SubSequence
Returns a subsequence from the specified position to the end of the collection.
func withContiguousStorageIfAvailable<R>((UnsafeBufferPointer<Self.Element>) throws -> R) rethrows -> R?
Executes a closure on the sequence’s contiguous storage.
enum Change
A single change to a collection.
struct Index
The position of a collection difference.
func flatMap<ElementOfResult>((Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]
func index(of: Self.Element) -> Self.Index?
Returns the first index where the specified value appears in the collection.