[swift-evolution] Switch on an optional enum -- `case: nil`?

Krzysztof Siejkowski krzysztof at siejkowski.net
Thu May 5 10:52:24 CDT 2016


It doesn’t compile because you’re switching on the Optional and trying to pattern match it to Coin.

It compiles right when you pattern match it to Optional<Coin>:

switch result {
case .heads?: print("heads")
case .tails?: print("tails")
case nil: print("not yet flipped")
}

Best,
Krzysztof

On 5 May 2016 at 17:42:24, Eric Miller via swift-evolution (swift-evolution at swift.org) wrote:

Wondering if you guys think this is a reasonable idea.

I was switching on an optional enum today, and naturally gravitated towards including nil as a case:

enum Coin {
  case heads
  case tails
}
var result: Coin?

switch result {
case heads: print("heads")
case tails: print("tails")
case nil: print("not yet flipped") // exhaustive
}

Doesn't compile, and of course I can if-let or guard to unwrap instead, but I like the compactness of this.
_______________________________________________
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/20160505/68e62b6e/attachment.html>


More information about the swift-evolution mailing list