Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Should I prefer sealed class or Enumeration in Scala?

Tags:

enums

scala

I'm trying to implement a Plurk API biding for Scala, but I have a design choice to made.

For example, the gender attribute of a Plurk user could be one of "male", "female", "other".

sealed trait Gender
object Male extends Gender
object Female extends Gender
object Others extends Gender

The question is should I prefer sealed class/object like above code example, over Enumeration to represent enumeration types?

Because I find that I rarely come across Enumeration when I use other Scala library, and lots of tutorial of Actor use sealed class/object to represent messages for Actor.

So does this means that in Scala, sealed class is a better/conventional choice over Enumeration?

like image 474
Brian Hsu Avatar asked Nov 21 '10 03:11

Brian Hsu


2 Answers

If you don't need to iterate over your objects of Gender or need methods like next and previous, classes and objects is the right solution.

If you need the features of the "classes and objects" and of "scala.Enumeration" this and this question could be of interest to you.

like image 128
soc Avatar answered Sep 28 '22 04:09

soc


Using Enumeration is also quite a bit cheaper in terms of class count. In the Gender example that does not matter, but it might start to matter if you want to model processor instructions by an enumeration with 100+ elements.

like image 25
Martin Odersky Avatar answered Sep 28 '22 03:09

Martin Odersky