ProtocolSwift5.9.0

    MutableCollection

    A collection that supports subscript assignment.

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

    Collections that conform to MutableCollection gain the ability to change the value of their elements. This example shows how you can modify one of the names in an array of students.

    var students = ["Ben", "Ivy", "Jordell", "Maxime"]
    if let i = students.firstIndex(of: "Maxime") {
        students[i] = "Max"
    }
    print(students)
    // Prints "["Ben", "Ivy", "Jordell", "Max"]"

    In addition to changing the value of an individual element, you can also change the values of a slice of elements in a mutable collection. For example, you can sort part of a mutable collection by calling the mutable sort() method on a subscripted subsequence. Here’s an example that sorts the first half of an array of integers:

    var numbers = [15, 40, 10, 30, 60, 25, 5, 100]
    numbers[0..<4].sort()
    print(numbers)
    // Prints "[10, 15, 30, 40, 60, 25, 5, 100]"

    The MutableCollection protocol allows changing the values of a collection’s elements but not the length of the collection itself. For operations that require adding or removing elements, see the RangeReplaceableCollection protocol instead.

    Conforming to the MutableCollection Protocol

    To add conformance to the MutableCollection protocol to your own custom collection, upgrade your type’s subscript to support both read and write access.

    A value stored into a subscript of a MutableCollection instance must subsequently be accessible at that same position. That is, for a mutable collection instance a, index i, and value x, the two sets of assignments in the following code sample must be equivalent:

    a[i] = x
    let y = a[i]
    
    // Must be equivalent to:
    a[i] = x
    let y = x

    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

    where Self:BidirectionalCollection

    Members

    Citizens in Swift

    where Self:RandomAccessCollection

    Members

    Citizens in Swift

    where Self:RandomAccessCollection, Self.Element:Comparable

    Members

    Available in Foundation

    Subtypes

    Extension in Algorithms

    Members

    Extension in Algorithms

    where Self:BidirectionalCollection

    Members