[swift-evolution] Working with enums by name

Leonardo Pessoa me at lmpessoa.com
Thu Jun 2 07:17:27 CDT 2016

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.


-----Original Message-----
From: "Patrick Smith" <pgwsmith at gmail.com>
Sent: ‎02/‎06/‎2016 02:07 AM
To: "Brent Royal-Gordon" <brent at architechies.com>
Cc: "Leonardo Pessoa" <me at lmpessoa.com>; "swift-evolution" <swift-evolution at swift.org>
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 <swift-evolution at swift.org> 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, …
> 	}

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

More information about the swift-evolution mailing list