[swift-evolution] Proposal: "break for", "break do", "break if", "break case", "break repeat", etc.

Alex Chan alex at alexwlchan.net
Wed Dec 9 17:30:07 CST 2015


How would you deal with in-between cases, where you don’t want to break all the way to the topmost loop?

This is a somewhat contrived example, but illustrates the point:

for … {
    mylabel: for … {
        for … {
            if (condition) { break mylabel }
        }
    }
}

How do you write this without labels?

— Alex

> On 9 Dec 2015, at 23:23, Amir Michail via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>> On Dec 9, 2015, at 5:56 PM, Chris Lattner <clattner at apple.com> wrote:
>> 
>>> 
>>> On Dec 9, 2015, at 1:26 PM, Amir Michail via swift-evolution <swift-evolution at swift.org> wrote:
>>> 
>>> With such constructs, you could avoid using labels most of the time.
>> 
>> Quick comment: this doesn’t eliminate the need for labels (since they provide the ability to break out of e.g. doubly nested for loops), but it does add complexity to the language.  As such, it doesn’t seem like a clear win to me.
> 
> One of my examples has “break outer for”. I think it might be possible to eliminate labels completely with a reasonable looking syntax.
> 
>> 
>> -Chris
>> 
>>> 
>>> For example:
>>> 
>>> for … {
>>> if … {
>>>   guard … else { break if }
>>>   ...
>>> }
>>> }
>>> 
>>> for … {
>>> for … {
>>>   if … {
>>>     break outer for
>>>   }
>>> }
>>> }
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution



More information about the swift-evolution mailing list