[swift-evolution] Switch statement tuple labels
Tony Allevato
tony.allevato at gmail.com
Sun Jan 1 21:49:12 CST 2017
The "after" example you posted seems to work already in Swift today. Is
there something I'm missing?
On Sun, Jan 1, 2017 at 7:35 PM David Sweeris via swift-evolution <
swift-evolution at swift.org> wrote:
>
>
> 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
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170102/3e1e3c4c/attachment.html>
More information about the swift-evolution
mailing list