Benefits of sealed traits in Scala (like enum in Java)

As a quick note about traits in Scala, this StackOverflow page makes a few good points about sealed traits:

  • sealed traits can only be extended in the same file
  • this lets the compiler easily know all possible subtypes
  • example: the compiler can emit warnings if a match/case expression is not exhaustive
  • use sealed traits when the number of possibly subtypes is finite and known in advance
  • they can be a way of creating something like an enum in Java

For functional programming sealed traits also offer one really big advantage:

  • they help you define algebraic data types

Examples of things that can be sealed traits are days in the week, months in a year, and the suits in a deck of cards.

The first answer from that SO page shows a simple example of how to write a sealed trait:

sealed trait Answer
case object Yes extends Answer
case object No extends Answer

This article on noelwelsh.com about algebraic data types and sealed traits is also helpful.

Add new comment

The content of this field is kept private and will not be shown publicly.

Anonymous format

  • Allowed HTML tags: <em> <strong> <cite> <code> <ul type> <ol start type> <li> <pre>
  • Lines and paragraphs break automatically.
By submitting this form, you accept the Mollom privacy policy.