[swift-evolution] Request: Ability to refer to an enum case in abstract (without its associated value)

Al Skipp al_skipp at fastmail.fm
Thu Dec 10 17:30:48 CST 2015


Maybe I’m misunderstanding your use case, but I believe what you require is already possible. When switching through enum cases, there’s no obligation to bind to the associated values if they’re not needed.

enum Foo {
  case Bar(String)
  case Baz(Int, Int)
}

let baz = Foo.Baz(1, 2)

switch baz {
case .Bar: print("Bar")
case .Baz: print("Baz")
}

Al


> On 10 Dec 2015, at 22:05, Evan Maloney via swift-evolution <swift-evolution at swift.org> wrote:
> 
> When an enum case takes one or more associated values, it acts more like a type than a value because it specifies a format for storing information without specifying the exact informations stored. We're able to refer to other types as such in Swift, but not in this case.
> 
> I think it would be helpful if any enum with at least one case had a parallel representation containing the same cases but without associated values. It might look like:
> 
> enum Foo
> {
>     case Bar(String)
>     case Baz(Int, Int)
> 
>     // generated by the compiler; returns the parallel FooType
>     // with cases that don't have associated values
>     var enumType: FooType
> }
> 
> // generated by the compiler when an enum
> // has at least one associated value
> enum FooType
> {
>     case Bar
>     case Baz
> }
> 
> This would make it possible to be able to refer to cases in the abstract.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151210/3dfefda3/attachment.html>


More information about the swift-evolution mailing list