> On 7 Mar 2017, at 15:24, Saagar Jha via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> I believe the indentation is more a signal for a new scope than curly braces. 
> Swift doesn’t indent its switch cases since they’re a part of the same scope, 
> while nested types and methods are a new scope.

I'm not sure that it's Swift-specific, this just seems to be what Xcode does 
even if you're working in another language; I use Xcode to do PHP and 
Javascript as well (it's not the best for these but I already have it so it's 
an obvious choice), and it does the same thing for switch statements.

It's a matter of personal preference; personally I do indent switch cases but 
only if all of them are simple (i.e- the case and its content can be put on a 
single line without being too noisy looking), but if one or more of the cases 
are multi-line then I use the default (cases not indented, but contents are).

I think the point is that it's (sort of) one scope, since you can use the 
fallthrough keyword to process multiple cases if you want to, the switch and 
cases just determines at what point you dive into that scope.

It makes sense when you think about how switch statements actually execute; in 
essence the contents of each case are usually structured as one big lump of 
code, with jumps to break out of it once the case is complete. The switch 
itself is some form of conditional matching to pick which case is triggered, 
resulting in a jump to the correct location. While this is similar to how if 
statements work behind the scenes, you can't fall-through (only one branch is 
ever executed, never both).
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to