This is definitively something very useful but it also introduces a strong
asymmetry into Swift statements. In all control-flow statements, the condition
is part of the outer scope. Or, to be more precise, its part of an intermediate
scope between the outer and the inner scope (as you can declare variables in
the condition which are invisible to the outer scope but visible to the inner
scope). Your suggestion essentially moves the condition of repeat {} while ()
to the inner scope. I think that the more complex semantics is not worth the
change.
Here is how I deal with it btw:
process: do {
let success = …
guard success else { continue process }
}
Again, goto FTW :p
T.
> On 18 Jul 2016, at 19:52, Braeden Profile via swift-evolution
> <[email protected]> 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
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution