ProtocolSwift5.9.0

    RangeReplaceableCollection

    A collection that supports replacement of an arbitrary subrange of elements with the elements of another collection.

    protocol RangeReplaceableCollection<Element> : Collection where Self.SubSequence : RangeReplaceableCollection

    Range-replaceable collections provide operations that insert and remove elements. For example, you can add elements to an array of strings by calling any of the inserting or appending operations that the RangeReplaceableCollection protocol defines.

    var bugs = ["Aphid", "Damselfly"]
    bugs.append("Earwig")
    bugs.insert(contentsOf: ["Bumblebee", "Cicada"], at: 1)
    print(bugs)
    // Prints "["Aphid", "Bumblebee", "Cicada", "Damselfly", "Earwig"]"

    Likewise, RangeReplaceableCollection types can remove one or more elements using a single operation.

    bugs.removeLast()
    bugs.removeSubrange(1...2)
    print(bugs)
    // Prints "["Aphid", "Damselfly"]"
    
    bugs.removeAll()
    print(bugs)
    // Prints "[]"

    Lastly, use the eponymous replaceSubrange(_:with:) method to replace a subrange of elements with the contents of another collection. Here, three elements in the middle of an array of integers are replaced by the five elements of a Repeated<Int> instance.

     var nums = [10, 20, 30, 40, 50]
     nums.replaceSubrange(1...3, with: repeatElement(1, count: 5))
     print(nums)
     // Prints "[10, 1, 1, 1, 1, 1, 50]"

    Conforming to the RangeReplaceableCollection Protocol

    To add RangeReplaceableCollection conformance to your custom collection, add an empty initializer and the replaceSubrange(_:with:) method to your custom type. RangeReplaceableCollection provides default implementations of all its other methods using this initializer and method. For example, the removeSubrange(_:) method is implemented by calling replaceSubrange(_:with:) with an empty collection for the newElements parameter. You can override any of the protocol’s required methods to provide your own custom implementation.

    Supertypes

    • protocol Collection

      A sequence whose elements can be traversed multiple times, nondestructively, and accessed by an indexed subscript.

    • protocol Sequence

      A type that provides sequential, iterated access to its elements.

    Requirements

    Citizens in Swift

    Members

    Citizens in Swift

    where Self:BidirectionalCollection

    Members

    Citizens in Swift

    where Self:BidirectionalCollection, Self == Self.SubSequence

    Members

    Available in _StringProcessing

    Members

    Available in _StringProcessing

    where Self:BidirectionalCollection, Self.SubSequence == Substring

    Members

    Available in _StringProcessing

    where Self.Element:Equatable

    Members

    Available in _StringProcessing

    where Self.SubSequence == Substring

    Members

    Available in RegexBuilder

    where Self:BidirectionalCollection, Self.SubSequence == Substring

    Members

    Available in Cxx

    Members

    • init<C>(C)

      Creates a collection containing the elements of a C++ container.

    Available in Foundation

    Subtypes

    Extension in AsyncAlgorithms

    Members