[swift-evolution] [proposal] extra if syntax

Krzysztof Siejkowski krzysztof at siejkowski.net
Thu May 12 05:16:39 CDT 2016

And what is with ‘a’ if this situation:

if b == x {
a = 5

Nothing :)
Well, it’s not nothing, it has the same value that it had before.

However, as pointed by Leonardo Pessoa, there is a problem with expression:

let a = 5 if b == x

It is equivalent to:

if b == x {

    let a = 5 


but doesn’t communicate clearly that in the next line `a` is already out of scope and that you cannot write:

let a = 5 if b == x

let c = a // a is not defined here

but you can write:

let a = 1 if b == x 

let a = 2 if b == x // other a from other scope

let a = 3 if b == x // another a from another scope

without error concerning immutability.

Austin Zheng has also rightly pointed that this “postfix” syntax looks as if the if-statement is now an expression, which will further confuse people coming from languages that use if-expressions.

Also, I find:


    // … a lot of code 

} if b == x

way less readable, simply because I read top to bottom. This syntax makes me search for the scope delimiter, understand the condition and only after lets me read the logic.

All the best,


swift-evolution mailing list
swift-evolution at swift.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160512/852bd41d/attachment.html>

More information about the swift-evolution mailing list