[swift-evolution] Extending declaration scope to condition for `repeat { } while ()`

Haravikk swift-evolution at haravikk.me
Mon Jul 18 15:06:28 CDT 2016


Strong +1 from me, I actually ran into a bunch of cases like this recently, having to put a tracking variable outside the loop feels weird; it makes sense for a regular while loop, but I see no reason that repeat/while couldn't have values from the loop be in scope for its condition.

There is a very slim chance of breakage if a variable is shadowed, can we use that as an excuse to get this done in Swift 3? =D

> On 18 Jul 2016, at 18:52, Braeden Profile via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Good morning, Swift community!
> 
> I’ve come across a situation a number of times where I write code that has to try something one or more times using a `repeat…while` loop and the condition relies upon variables that should be declared within the scope of the loop.
> 
> repeat
> {
> 	let success = doSomething()
> }
> while !success
> 
> The compiler unnecessarily prohibits this:  “Use of unresolved identifier four.”  In this simple case, we can write:
> 
> repeat
> { }
> while !doSomething()
> 
> But in a more complex situation, we are forced to write:
> 
> var success: Bool
> repeat
> {
> 	success = doSomething()
> }
> while !success
> 
> 
> We could change this so that the declarations within the top level scope of the loop are accessible from the condition.
> 
> Thanks for reading my first post to the Swift discussion board!
> —Braeden
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160718/3fc08fb8/attachment.html>


More information about the swift-evolution mailing list