[swift-evolution] Switch statement tuple labels

David Sweeris davesweeris at mac.com
Sun Jan 1 21:35:48 CST 2017



Sent from my iPhone

> On Jan 1, 2017, at 19:25, Erica Sadun via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Was helping a friend with some code and got inspired. I decided to throw this on list to see if there's any traction. 
> 
> Idea: Introduce optional argument labels to tuples in switch statements
> 
> Motivation: Cases can be less readable when pattern matching tuples. Semantically sugared, optional argument labels could increase readability for complex `switch` statements by incorporating roles into cases.
> 
> Here's an example before:
> 
> fileprivate func chargeState(for battery: BatteryService)
>     -> ChargeState
> {
>     switch (battery.state, battery.isCalculating) {
>     case (.isACPowered, true):
>         return .calculating(isDischarging: false)
>     case (.isACPowered, _) where battery.isCharging:
>         return .charging
>     case (.isACPowered, _):
>         return .acPower
>     case (_, true):
>         return .calculating(isDischarging: true)
>     default:
>         return .batteryPower
>     }
> }
> 
> and after:
> 
> fileprivate func chargeState(for battery: BatteryService)
>     -> ChargeState
> {
>     switch (battery.state, calculating: battery.isCalculating) {
>     case (.isACPowered, calculating: true):
>         return .calculating(isDischarging: false)
>     case (.isACPowered, _) where battery.isCharging:
>         return .charging
>     case (.isACPowered, _):
>         return .acPower
>     case (_, calculating: true):
>         return .calculating(isDischarging: true)
>     default:
>         return .batteryPower
>     }
> }
> 
> It's a pretty minor change, and I could see it being added to allow case statements to be more readable with a minimal change to the compiler. I also have a back-burnered proposal I intend to introduce in Phase 2 that would introduce Boolean raw value enumerations for flags.
> 
> Thoughts?

I can't think of a reason not to do that... +1

- Dave Sweeris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170101/ed2bf6a3/attachment.html>


More information about the swift-evolution mailing list