There are several ways to solve this, which IMO is a basic functionality of 
enums, writing code that is currently possible and works. But that's the issue, 
you still have to write code to have a basic functionally. I don't remember not 
being able to do this out-of-the-box in any language I worked with.

L

-----Original Message-----
From: "Patrick Smith" <[email protected]>
Sent: ‎02/‎06/‎2016 02:07 AM
To: "Brent Royal-Gordon" <[email protected]>
Cc: "Leonardo Pessoa" <[email protected]>; "swift-evolution" 
<[email protected]>
Subject: Re: [swift-evolution] Working with enums by name

Great points Brent. I think the ValuesEnumerable method would be the most 
straight forward. Also, the number of cases are likely only going to be in 
range of 6–20, so iterating would be fine I think. People can create something 
like `Dictionary(Planet.allValues.enumerated().lazy.map{ ($1, $0) })` (I think 
that’s right) if they really need.


> On 2 Jun 2016, at 2:40 PM, Brent Royal-Gordon via swift-evolution 
> <[email protected]> wrote:
> 
> Or the `ValuesEnumerable` proposal would give you a convenient, though 
> slightly slow, way to do two-way lookup by order:
> 
>       enum Planet: String, ValuesEnumerable {
>               var order: Int {
>                       return Planet.allValues.index(of: self)!
>               }
>               init(order: Int) {
>                       self = Planet.allValues[order]
>               }
>               case mercury, venus, …
>       }

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to