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

David Sweeris davesweeris at mac.com
Thu May 5 10:55:36 CDT 2016


So… Is your idea that wrapping a SomeEnum in an Optional would add some “invalid” case to SomeEnum, or that switching on a SomeEnum? would be implicitly rewrite:
switch result {
case .heads: print("heads")
case .tails: print("tails")
case .none: print("not yet flipped") // exhaustive
}
to:
switch result {
case .none: print("not yet flipped")
case .some(let _result):
  switch _result {
  case .heads: print("heads")
  case .tails: print("tails")
  }
}

> On May 5, 2016, at 10:40 AM, 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/1c21cd7c/attachment.html>


More information about the swift-evolution mailing list