Actually, IMO, it's an oversight that there's no remove(where:), or another in-place equivalent to `filter`. I'm in favor of it.
Félix > Le 25 sept. 2017 à 15:17, Xiaodi Wu <[email protected]> a écrit : > > On Mon, Sep 25, 2017 at 4:55 PM, Xiaodi Wu <[email protected] > <mailto:[email protected]>> wrote: > Brent has a great proposal in the pipeline regularizing the names of some of > these functions and filling in some of the more glaring gaps. > > With regard to the specific items proposed here, Felix shows that ‘filter’ > provides an idiomatic one-line way of doing some of what is proposed; > currently remove(index(of:)) and operating on sliced would accomplish the > rest. Therefore, I do not think these proposed additions meet the very high > bar for expansion of the standard library API. > > I should add, however, it is wonderful (IMO) that more people are thinking > about these APIs; welcome and thank you for restarting this very important > conversation. It would be nice to get some more eyeballs on the previously > discussed set of rationalizations to the Collection APIs so that we can make > their use a little more ergonomic--with any luck, some better names for > existing extension methods and filling in a very few gaps judiciously would > allow us to make the existing facilities sufficiently more discoverable that > it will be easier to accomplish what you seek without adding more extensions. > > > On Mon, Sep 25, 2017 at 11:14 Félix Cloutier via swift-evolution > <[email protected] <mailto:[email protected]>> wrote: > 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] <mailto:[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] <mailto:[email protected]> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution> > > _______________________________________________ > swift-evolution mailing list > [email protected] <mailto:[email protected]> > https://lists.swift.org/mailman/listinfo/swift-evolution > <https://lists.swift.org/mailman/listinfo/swift-evolution> >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
