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
