You can use popLast, that does exactly that: https://github.com/apple/swift/blob/master/stdlib/public/core/BidirectionalCollection.swift#L213 <https://github.com/apple/swift/blob/master/stdlib/public/core/BidirectionalCollection.swift#L213>
Max > On Oct 17, 2016, at 1:14 PM, Louis D'hauwe via swift-evolution > <[email protected]> wrote: > > Regarding the removeLast() function on Collection: > > The current implementation > <https://github.com/apple/swift/blob/c3b7709a7c4789f1ad7249d357f69509fb8be731/stdlib/public/core/BidirectionalCollection.swift#L228> > is: > @discardableResult > public mutating func removeLast() -> Iterator.Element { > let element = last! > self = self[startIndex..<index(before: endIndex)] > return element > } > > This makes it so that if you call removeLast() on an empty collection you get > a fatal error. > ("fatal error: can't remove last element from an empty collection") > > The documentation for removeLast() > <https://github.com/apple/swift/blob/c3b7709a7c4789f1ad7249d357f69509fb8be731/stdlib/public/core/BidirectionalCollection.swift#L220> > even has this noted: > "The collection must not be empty.". > > Surely you could just remove the explicit unwrapping of 'last' and add a > guard statement? > > As such: > @discardableResult > public mutating func removeLast() -> Iterator.Element? { > guard let element = last else { > return nil > } > self = self[startIndex..<index(before: endIndex)] > return element > } > > It sure seems more "Swifty" to alert at compile time that removing the last > item of a collection might fail, and make it return nil as a result. > > – Louis D'hauwe > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
