This function returns a subsequence containing the elements from the end of the
collection until predicate returns false
and skipping the remaining elements.
This example uses suffix(while: )
to iterate through collection of integers
from the end until the predicate returns false, in this case when $0 <= 5
(0...10).suffix(while: { $0 > 5 }) // == [6,7,8,9,10]
The suffix(while:)
function is added as a method on an extension of
BidirectionalCollection
.
extension BidirectionalCollection {
public func suffix(while predicate: (Element) throws -> Bool) rethrows -> SubSequence
}
This method requires BidirectionalCollection
for an efficient implementation
which visits as few elements as possible. Swift's protocol allows for backward
traversal of a collection as well as access to last property of a collection.
Calling this method is O(n), where n is the length of the collection.
The function's name resembles that of an existing Swift function
prefix(while:)
, which performs same operation however in the forward direction
of the collection. Hence, as this function traverses from the end of the
collection, suffix(while:)
is an appropriate name.