array.remove(where: { $0 > 3 })
array.remove { $0 > 3 }

> On Apr 10, 2017, at 12:25 PM, David Hart via swift-evolution 
> <[email protected]> wrote:
> 
> 
> 
> On 10 Apr 2017, at 17:17, Maximilian Hünenberger via swift-evolution 
> <[email protected] <mailto:[email protected]>> wrote:
> 
>> How about this:
>> 
>>     array.removeEvery(3)
>>     array.removeEvery{ $0 > 3 }
>> 
>> I think it preserves the meaning while it reads nicely. However "every" has 
>> no precedent in other functions, as far as I know.
> 
> Every has a very ambiguous meaning in English. It could be understood as 
> "every 3 values" as in 0, 3, 6, 9, etc...
> 
>> Am 10.04.2017 um 04:32 schrieb Ben Cohen via swift-evolution 
>> <[email protected] <mailto:[email protected]>>:
>> 
>>> 
>>>> On Apr 8, 2017, at 5:41 PM, Brent Royal-Gordon <[email protected] 
>>>> <mailto:[email protected]>> wrote:
>>>> 
>>>>> On Apr 8, 2017, at 12:44 PM, Xiaodi Wu via swift-evolution 
>>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>>> 
>>>>> +1. Perfect. Let's not bikeshed this and get it done!
>>>> 
>>>> 
>>>> Sorry, I'm going to have to insist on bikeshedding.
>>>> 
>>>> `equalTo:` is kind of ugly and has no precedent in the standard library. 
>>>> Similar APIs seem to either leave the parameter unlabeled or use `of:` (as 
>>>> in `index(of:)`). I think unlabeled is probably the right answer here.
>>>> 
>>> 
>>> I think removeAll(of:) works well for the equatable value version.
>>> 
>>> FWIW of all the ideas from the all thread, containsOnly(_:) for the 
>>> equatable value version works for me. It has a nice symmetry: contains(3) 
>>> vs containsOnly(3).
>>> 
>>>> The main shortcoming I can see is that if you see:
>>>> 
>>>>    array.removeAll(3)
>>>> 
>>> 
>>> Personally don’t feel good about an unlabelled version. It doesn’t read 
>>> right. Remove all three what?
>>> 
>>>> You might think `3` is either an index or a count. But neither of those 
>>>> actually make sense:
>>>> 
>>>> * It can't be an index because then `All` would have no meaning. There's 
>>>> only ever one thing at a given index. Besides, indices are almost always 
>>>> marked with `at:` or another parameter label.
>>>> * It can't be a count because `All` is already a count. What could "remove 
>>>> all 3" possibly mean if the array doesn't happen to have three elements?
>>>> 
>>>> And this is only a problem if the value happens to be an integer. If it's 
>>>> anything else, the type makes clear that this can't possibly be an index 
>>>> or count; it must be an element.
>>>> 
>>>> (But if you really do think this is insurmountable, `removeAll(of: 3)` 
>>>> *is* impossible to misinterpret and fits in better than 
>>>> `removeAll(equalTo:)`.)
>>>> 
>>>> (P.S. The existing oddness of `removeFirst(_:)` compared to 
>>>> `removeFirst()` and `removeAll()` is why I proposed last year that it be 
>>>> renamed to `removePrefix(_:)`, which matches the count-taking `prefix(_:)` 
>>>> method.)
>>>> 
>>>> -- 
>>>> Brent Royal-Gordon
>>>> Architechies
>>>> 
>>> 
>>> _______________________________________________
>>> 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] <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

Reply via email to