[swift-evolution] [Idea] Wrap switch cases in curly braces
G B
g.c.b.at.work at gmail.com
Fri Jul 8 00:58:47 CDT 2016
I’d imagine it would be the same just without the colon and with the braces:
enum MyEnum {
case IntEnum(Int)
case StringEnum(String)
}
var x=MyEnum.StringEnum("Hello")
switch x {
case .IntEnum(let x) {
print(x)
}
case .StringEnum(let x) {
print(x)
}
}
Not much different than:
if case .StringEnum(let v) = x {
print(v+" again")
}
except that the switch compares all case statements against x.
> On Jul 7, 2016, at 10:37 PM, David Sweeris <davesweeris at mac.com> wrote:
>
> What would be the proposed syntax for cases with associated values?
>
> In general, +1 for simplifying the syntax, but I'm not sure it'd work well, given that enums take on a larger roll in Swift than they do in other languages. Or maybe it'd be fine... I'm just too tired to picture it in my head.
>
> - Dave Sweeris
>
>> On Jul 7, 2016, at 15:07, G B via swift-evolution <swift-evolution at swift.org> wrote:
>>
>> It has always seemed odd to me that `case`s use a colon as a delimiter rather than curly braces like everything else. Is there a reason for this other than the legacy of C-like languages?
>>
>> If I wanted to write a series of branching `if` \ `else` statements I would do it like so:
>>
>> if x==0 { print(0) }
>> else if x==1 { print (1) }
>> else if x==2 { print(2) }
>> else { print("other”) }
>>
>> I believe all flow control is wrapped in curly braces, except for `case`s inside a `switch`:
>>
>> switch x {
>> case 0: print(0)
>> case 1: print(1)
>> case 2: print(2)
>> default: print("other")
>> }
>>
>>
>> I feel like this would be more consistent with the rest of the syntax:
>>
>> switch x {
>> case 0 { print(0) }
>> case 1 { print(1) }
>> case 2 { print(2) }
>> default { print("other”) }
>> }
>>
>> The colon syntax evokes a label, but the modern, complex `case` statements in Swift don’t act much like labels.
>> _______________________________________________
>> 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