A collection of insertions and removals that describe the difference between two ordered collection states.
SDK
- Xcode 11.0+
Framework
- Swift Standard Library
Declaration
struct CollectionDifference<ChangeElement>
A collection of insertions and removals that describe the difference between two ordered collection states.
SDK
Framework
struct CollectionDifference<ChangeElement>
typealias CollectionDifference.Element
A type representing the sequence’s elements.
typealias CollectionDifference.Indices
A type that represents the indices that are valid for subscripting the collection, in ascending order.
typealias CollectionDifference.Iterator
A type that provides the collection’s iteration interface and encapsulates its iteration state.
typealias CollectionDifference.SubSequence
A sequence that represents a contiguous subrange of the collection’s elements.
init?<Changes>(Changes)
Creates a new collection difference from a collection of changes.
init(from: Decoder)
Creates a new instance by decoding from the given decoder.
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: CollectionDifference<ChangeElement>.Change?
The first element of the collection.
var hashValue : Int
The hash value.
var indices: DefaultIndices<CollectionDifference<ChangeElement>>
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<CollectionDifference<ChangeElement>>
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.
func allSatisfy ((CollectionDifference<ChangeElement>.Change) -> Bool) -> Bool
Returns a Boolean value indicating whether every element of a sequence satisfies a given predicate.
func compactMap <ElementOfResult>((CollectionDifference<ChangeElement>.Change) -> ElementOfResult?) -> [ElementOfResult]
Returns an array containing the non-nil
results of calling the given transformation with each element of this sequence.
func contains(CollectionDifference<ChangeElement>.Change) -> Bool
Returns a Boolean value indicating whether the sequence contains the given element.
func contains(where: (CollectionDifference<ChangeElement>.Change) -> Bool) -> 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: (CollectionDifference<ChangeElement>.Change) -> Bool) -> Slice<CollectionDifference<ChangeElement>>
Returns a subsequence by skipping elements while predicate
returns true
and returning the remaining elements.
func dropFirst (Int) -> Slice<CollectionDifference<ChangeElement>>
Returns a subsequence containing all but the given number of initial elements.
func dropLast (Int) -> Slice<CollectionDifference<ChangeElement>>
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: (CollectionDifference<ChangeElement>.Change, OtherSequence.Element) -> Bool) -> 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 encode(to: Encoder)
Encodes this value into the given encoder.
func enumerated() -> EnumeratedSequence<CollectionDifference<ChangeElement>>
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((CollectionDifference<ChangeElement>.Change) -> Bool) -> [CollectionDifference<ChangeElement>.Change]
Returns an array containing, in order, the elements of the sequence that satisfy the given predicate.
func first(where: (CollectionDifference<ChangeElement>.Change) -> Bool) -> CollectionDifference<ChangeElement>.Change?
Returns the first element of the sequence that satisfies the given predicate.
func firstIndex (of: CollectionDifference<ChangeElement>.Change) -> CollectionDifference<ChangeElement>.Index?
Returns the first index where the specified value appears in the collection.
func firstIndex (where: (CollectionDifference<ChangeElement>.Change) -> Bool) -> CollectionDifference<ChangeElement>.Index?
Returns the first index in which an element of the collection satisfies the given predicate.
func flatMap <SegmentOfResult>((CollectionDifference<ChangeElement>.Change) -> SegmentOfResult) -> [SegmentOfResult.Element]
Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.
func forEach ((CollectionDifference<ChangeElement>.Change) -> Void)
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, limitedBy : CollectionDifference<ChangeElement>.Index) -> Bool
Offsets the given index by the specified distance, or so that it equals the given limiting index.
func formIndex (after: inout CollectionDifference<ChangeElement>.Index)
Replaces the given index with its successor.
func hash(into: inout Hasher)
Hashes the essential components of this value by feeding them into the given hasher.
func index(CollectionDifference<ChangeElement>.Index, offsetBy : Int) -> CollectionDifference<ChangeElement>.Index
Returns an index that is the specified distance from the given index.
func index(CollectionDifference<ChangeElement>.Index, offsetBy : Int, limitedBy : CollectionDifference<ChangeElement>.Index) -> CollectionDifference<ChangeElement>.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(of: CollectionDifference<ChangeElement>.Change) -> CollectionDifference<ChangeElement>.Index?
Returns the first index where the specified value appears in the collection.
func index(where: (CollectionDifference<ChangeElement>.Change) -> Bool) -> CollectionDifference<ChangeElement>.Index?
Returns the first index in which an element of the collection satisfies the given predicate.
func inferringMoves () -> CollectionDifference<ChangeElement>
Returns a new collection difference with associations between individual elements that have been removed and inserted only once.
func lexicographicallyPrecedes <OtherSequence>(OtherSequence, by: (CollectionDifference<ChangeElement>.Change, CollectionDifference<ChangeElement>.Change) -> Bool) -> 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<CollectionDifference<ChangeElement>>
Returns an iterator over the elements of the collection.
func map<T>((CollectionDifference<ChangeElement>.Change) -> T) -> [T]
Returns an array containing the results of mapping the given closure over the sequence’s elements.
func max(by: (CollectionDifference<ChangeElement>.Change, CollectionDifference<ChangeElement>.Change) -> Bool) -> CollectionDifference<ChangeElement>.Change?
Returns the maximum element in the sequence, using the given predicate as the comparison between elements.
func min(by: (CollectionDifference<ChangeElement>.Change, CollectionDifference<ChangeElement>.Change) -> Bool) -> CollectionDifference<ChangeElement>.Change?
Returns the minimum element in the sequence, using the given predicate as the comparison between elements.
func prefix(Int) -> Slice<CollectionDifference<ChangeElement>>
Returns a subsequence, up to the specified maximum length, containing the initial elements of the collection.
func prefix(through: CollectionDifference<ChangeElement>.Index) -> Slice<CollectionDifference<ChangeElement>>
Returns a subsequence from the start of the collection through the specified position.
func prefix(upTo : CollectionDifference<ChangeElement>.Index) -> Slice<CollectionDifference<ChangeElement>>
Returns a subsequence from the start of the collection up to, but not including, the specified position.
func prefix(while: (CollectionDifference<ChangeElement>.Change) -> Bool) -> Slice<CollectionDifference<ChangeElement>>
Returns a subsequence containing the initial elements until predicate
returns false
and skipping the remaining elements.
func randomElement () -> CollectionDifference<ChangeElement>.Change?
Returns a random element of the collection.
func randomElement <T>(using: inout T) -> CollectionDifference<ChangeElement>.Change?
Returns a random element of the collection, using the given generator as a source for randomness.
func reduce<Result>(Result, (Result, CollectionDifference<ChangeElement>.Change) -> Result) -> Result
Returns the result of combining the elements of the sequence using the given closure.
func reduce<Result>(into: Result, (inout Result, CollectionDifference<ChangeElement>.Change) -> ()) -> Result
Returns the result of combining the elements of the sequence using the given closure.
func reversed() -> [CollectionDifference<ChangeElement>.Change]
Returns an array containing the elements of this sequence in reverse order.
func shuffled() -> [CollectionDifference<ChangeElement>.Change]
Returns the elements of the sequence, shuffled.
func shuffled<T>(using: inout T) -> [CollectionDifference<ChangeElement>.Change]
Returns the elements of the sequence, shuffled using the given generator as a source for randomness.
func sorted(by: (CollectionDifference<ChangeElement>.Change, CollectionDifference<ChangeElement>.Change) -> Bool) -> [CollectionDifference<ChangeElement>.Change]
Returns the elements of the sequence, sorted using the given predicate as the comparison between elements.
func split(maxSplits : Int, omittingEmptySubsequences : Bool, whereSeparator : (CollectionDifference<ChangeElement>.Change) -> Bool) -> [Slice<CollectionDifference<ChangeElement>>]
Returns the longest possible subsequences of the collection, in order, that don’t contain elements satisfying the given predicate.
func split(separator: CollectionDifference<ChangeElement>.Change, maxSplits : Int, omittingEmptySubsequences : Bool) -> [ArraySlice<CollectionDifference<ChangeElement>.Change>]
Returns the longest possible subsequences of the sequence, in order, around elements equal to the given element.
func split(separator: CollectionDifference<ChangeElement>.Change, maxSplits : Int, omittingEmptySubsequences : Bool) -> [Slice<CollectionDifference<ChangeElement>>]
Returns the longest possible subsequences of the collection, 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: (CollectionDifference<ChangeElement>.Change, PossiblePrefix.Element) -> Bool) -> 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) -> Slice<CollectionDifference<ChangeElement>>
Returns a subsequence, up to the given maximum length, containing the final elements of the collection.
func suffix(from: CollectionDifference<ChangeElement>.Index) -> Slice<CollectionDifference<ChangeElement>>
Returns a subsequence from the specified position to the end of the collection.
func withContiguousStorageIfAvailable <R>((UnsafeBufferPointer<CollectionDifference<ChangeElement>.Change>) -> R) -> R?
Call body(p)
, where p
is a pointer to the collection’s contiguous storage. If no such storage exists, it is first created. If the collection does not support an internal representation in a form of contiguous storage, body
is not called and nil
is returned.
subscript<R>(R) -> Slice<CollectionDifference<ChangeElement>>
Accesses the contiguous subrange of the collection’s elements specified by a range expression.
subscript(Range<CollectionDifference<ChangeElement>.Index>) -> Slice<CollectionDifference<ChangeElement>>
Accesses a contiguous subrange of the collection’s elements.
subscript(CollectionDifference<ChangeElement>.Index) -> CollectionDifference<ChangeElement>.Element
Accesses the element at the specified position.
static func == (CollectionDifference<ChangeElement>, CollectionDifference<ChangeElement>) -> Bool
Returns a Boolean value indicating whether two values are equal.
struct CollectionDifference.Index
The position of a collection difference.
enum CollectionDifference.Change
A single change to a collection.