Generic Structure

CollectionDifference

A collection of insertions and removals that describe the difference between two ordered collection states.

Declaration

struct CollectionDifference<ChangeElement>

Topics

Type Aliases

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.

Initializers

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.

Instance Properties

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.

Instance Methods

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 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 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 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, 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(of: CollectionDifference<ChangeElement>.Change) -> CollectionDifference<ChangeElement>.Index?

Returns the first index where the specified value appears in the collection.

Deprecated
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.

Deprecated
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<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 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) -> [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.

Operator Functions

Structures

struct CollectionDifference.Index

The position of a collection difference.

Enumerations

enum CollectionDifference.Change

A single change to a collection.

Relationships

Conforms To

  • Decodable
  • Encodable
  • Equatable
  • Hashable