[swift-users] The value of enums

Dave Abrahams dabrahams at apple.com
Sun Nov 6 15:31:01 CST 2016

on Sun Nov 06 2016, Tino Heth <swift-users-AT-swift.org> wrote:

> Enums are a fundamental part of Swift, so I guess they won't change
> much — but I wonder if anyone shares my observations in real-life use…
> Afair, there are three different types of enums:
> - Enums with raw values
> - enums with associated objects
> - Plain enums (no underlying value)
> I use the first type quite often (as a convenient way to create string
> constants, or for serialization), but see no real value in plain enums
> (they offer nothing over enums backed with a raw value).
> The second type is special:
> It looks like a really cool concept, and and I started several designs
> based on them — just to realize later that structs and classes are a
> better fit.
> My conclusion so far is that enums perform bad as soon as you want to
> attach additional data or behavior; one or two computed properties are
> ok, but those switch-statements quickly become a burden.
> There are some options to work around this problem, but I guess I'll
> just stay away from enums with associated objects by default (with the
> exception of error-types — imho those can be modeled quite nicely).
> So, that's my current perception, and I'm curious if others had
> similar experiences — or, even more interesting, completely different
> observations and elegant solutions based on enums.

I have personally always found that exuberant use of that kind of enum
results in ergonomics and readability difficulties.  There are several
things we have thought of that could potentially improve the situation,
most notably exposing each case as an optional property.  I'd also
really like to see switch-expressions (as opposed to statements).  I'm
not sure if that's really all we need in order to allow enums to reach
their potential, though.


More information about the swift-users mailing list