Another alternative is to use `array = array.filter { $0 != someElement }`.

I thought that there would be a `remove(where:)` method, but there isn't.

Félix

> Le 25 sept. 2017 à 02:12, Alwyn Concessao via swift-evolution 
> <[email protected]> a écrit :
> 
> Hello,
> 
> After going through the Swift standard library functions provided for 
> removing elements from a collection, one common pattern can be observed in 
> all those functions and that is the functions provide to remove elements from 
> the collection by passing the position or index of the element or passing a 
> range of indices or positions to remove the elements.The standard library 
> does not provide options to remove an element from a collection by passing 
> the actual element  to be removed directly to the remove method.I've 
> encountered this situation many times when programming in Swift wherein I 
> want an element or a set of elements to be removed directly without always 
> accessing it's index in the collection but I have always ended up having to 
> first access the index of the element or elements which I want to remove and 
> then pass that index to the remove method.
> 
> The idea is to have an extension of the RangeReplaceableCollection protocol 
> to include a method to remove elements from a collection by passing directly 
> the element to be removed to the remove method and also include methods to 
> remove multiple elements from the collection by passing in a sequence of the 
> elements to be removed to the remove method and to remove an element in a 
> particular subrange of the collection.
> 
> The prototype of the methods will be as follows - 
> 
> extension RangeReplaceableCollection where Element:Equatable{
> 
> mutating func removeElement(_ elementToBeRemoved:Element){
> 
> //check if elementToBeRemoved exists ;if yes, remove all occurrences of 
> elementsToBeRemoved from the collection.
> 
> }
> 
> mutating func removeElementInSubrange(_ elementToBeRemoved:Element,in 
> range:Range<Index>){
> 
> //check if elementoBeRemoved exists; if yes, check if the index of 
> elementToBeRemoved is part of the subrange, if yes then remove else don't 
> remove.
> 
> }
> 
> mutating func removeContentsOf<C:Collection>(_ elementsToBeRemoved:C){
> 
> //check if each element in the elementsToBeRemoved sequence exists in the 
> collection, if the element exists, remove it.
> 
> }
> 
> I've implemented the above in the pull request 
> https://github.com/apple/swift/pull/12058 
> <https://github.com/apple/swift/pull/12058> 
> 
> Any thoughts/suggestions on this are appreciated.
> 
> Thanks!
> 
> Alwyn
> 
> 
> 
> 
> 
> 
> _______________________________________________
> 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

Reply via email to