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
