RangeReplaceableCollection

``protocol RangeReplaceableCollection : Collection where Self.SubSequence : RangeReplaceableCollection``
• ``` init(expression:count:) ```

Creates a new collection of a given size where for each position of the collection the value will be the result of a call of the given expression.

``````let values = Array(expression: "Value", count: 3)
print(values)
// Prints "["Value", "Value", "Value"]"
``````

Declaration

Swift

``init(expression: @autoclosure () throws -> Element, count: Int) rethrows``

Parameters

 ``` expression ``` The expression to execute for each position of the collection. ``` count ``` The count of the collection.
• ``` rotated(by:) ```

SwifterSwift: Returns a new rotated collection by the given places.

``````[1, 2, 3, 4].rotated(by: 1) -> [4,1,2,3]
[1, 2, 3, 4].rotated(by: 3) -> [2,3,4,1]
[1, 2, 3, 4].rotated(by: -1) -> [2,3,4,1]
``````

Declaration

Swift

``func rotated(by places: Int) -> Self``

Parameters

 ``` places ``` Number of places that the array be rotated. If the value is positive the end becomes the start, if it negative it’s that start becom the end.

Return Value

The new rotated collection.

• ``` rotate(by:) ```

SwifterSwift: Rotate the collection by the given places.

``````[1, 2, 3, 4].rotate(by: 1) -> [4,1,2,3]
[1, 2, 3, 4].rotate(by: 3) -> [2,3,4,1]
[1, 2, 3, 4].rotated(by: -1) -> [2,3,4,1]
``````

Declaration

Swift

``````@discardableResult
mutating func rotate(by places: Int) -> Self``````

Parameters

 ``` places ``` The number of places that the array should be rotated. If the value is positive the end becomes the start, if it negative it’s that start become the end.

Return Value

self after rotating.

• ``` removeFirst(where:) ```

SwifterSwift: Removes the first element of the collection which satisfies the given predicate.

``````   [1, 2, 2, 3, 4, 2, 5].removeFirst { \$0 % 2 == 0 } -> [1, 2, 3, 4, 2, 5]
["h", "e", "l", "l", "o"].removeFirst { \$0 == "e" } -> ["h", "l", "l", "o"]
``````

Declaration

Swift

``````@discardableResult
mutating func removeFirst(where predicate: (Element) throws -> Bool) rethrows -> Element?``````

Parameters

 ``` predicate ``` A closure that takes an element as its argument and returns a Boolean value that indicates whether the passed element represents a match.

Return Value

The first element for which predicate returns true, after removing it. If no elements in the collection satisfy the given predicate, returns `nil`.

• ``` removeRandomElement() ```

SwifterSwift: Remove a random value from the collection.

Declaration

Swift

``````@discardableResult
mutating func removeRandomElement() -> Element?``````
• ``` keep(while:) ```

SwifterSwift: Keep elements of Array while condition is true.

``````   [0, 2, 4, 7].keep(while: { \$0 % 2 == 0 }) -> [0, 2, 4]
``````

Throws

provided condition exception.

Declaration

Swift

``````@discardableResult
mutating func keep(while condition: (Element) throws -> Bool) rethrows -> Self``````

Parameters

 ``` condition ``` condition to evaluate each element against.

Return Value

self after applying provided condition.

• ``` take(while:) ```

SwifterSwift: Take element of Array while condition is true.

``````   [0, 2, 4, 7, 6, 8].take( where: {\$0 % 2 == 0}) -> [0, 2, 4]
``````

Declaration

Swift

``func take(while condition: (Element) throws -> Bool) rethrows -> Self``

Parameters

 ``` condition ``` condition to evaluate each element against.

Return Value

All elements up until condition evaluates to false.

• ``` skip(while:) ```

SwifterSwift: Skip elements of Array while condition is true.

``````   [0, 2, 4, 7, 6, 8].skip( where: {\$0 % 2 == 0}) -> [6, 8]
``````

Declaration

Swift

``func skip(while condition: (Element) throws -> Bool) rethrows -> Self``

Parameters

 ``` condition ``` condition to evaluate each element against.

Return Value

All elements after the condition evaluates to false.