> Am 06.06.2016 um 19:43 schrieb Tim Vermeulen via swift-evolution 
> <swift-evolution@swift.org>:
> 
> I also considered `until`, but it would be a bit confusing that `where` makes 
> sure a condition is met, while `until` makes sure the condition isn’t met. I 
> think `while` makes more sense because it corresponds to `break` in the same 
> way that `where` corresponds to `continue`.

That's a good argument! The only drawback is that `while` and `where` look 
quite similar at a glance.

-Thorsten 

> 
>> `while`, to me, actually reads like it should do what `where` does.
> 
> To me, `while` reads like it should stop the loop once the condition isn’t 
> met, just like in a while loop.
> 
>> I hadn't thought about `while` in this regard but wouldn't `until` make more 
>> sense? `while`, to me, actually reads like it should do what `where` does. 
>> In any case, whether it is `while` or `where`, this seems like a reasonable 
>> feature in my opinion.
>> 
>> TJ
>> 
>> On Mon, Jun 6, 2016 at 5:15 AM, Tim Vermeulen via 
>> swift-evolution<swift-evolution@swift.org(mailto:swift-evolution@swift.org)>wrote:
>>> We can already use a where clause in a for loop like this:
>>> 
>>> for element in array where someCondition(element) {
>>> // …
>>> }
>>> 
>>> which basically acts like
>>> 
>>> for element in array {
>>> guard someCondition(element) else { continue }
>>> // …
>>> }
>>> 
>>> Sometimes you want to break out of the loop when the condition isn’t met 
>>> instead. I propose a while clause:
>>> 
>>> for element in array while someCondition(element) {
>>> // …
>>> }
>>> 
>>> which would be syntactic sugar for
>>> 
>>> for element in array {
>>> guard someCondition(element) else { break }
>>> …
>>> }
>>> 
>>> I can see this particularly being useful if we have a sorted array and we 
>>> already know that once the condition isn’t met, it won’t be met either for 
>>> subsequent elements. Another use case could be an infinite sequence that we 
>>> want to cut off somewhere (which is simply not possible using a where 
>>> clause).
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org(mailto:swift-evolution@swift.org)
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to