LoginSignup
1
0

More than 3 years have passed since last update.

Scalaのsealedクラス

Last updated at Posted at 2019-10-25

Enum書いたりパターンマッチで網羅させたいときに呪文のように書いてるsealedクラス、根本的に何なんだっけと思ったのでメモ

封印されたクラス

sealed = 封印されたクラス。
sealedクラスでは、同じファイルで定義されているサブクラス以外は新しいサブクラスを追加できないようになっている。
だから、sealedクラスのサブクラスをケースクラスで定義してしまえば、それらがsealedクラスの全サブクラスになるので、パターンマッチでの網羅性が保証される(具体的にはコンパイラーが警告を発してくれる)。

sealed abstract class Color
case class Red(code: String) extends Color
case class Blue(code: String) extends Color
case class Green(code: String) extends Color

以下のような場合漏れがあり怒られる

def func(c: Color) = c match {
  case Red(_) => "red"
  case Brue(_) => "blue"
}

参考

Scalaスケーラブルプログラミング第3版 | Martin Odersky, Lex Spoon, Bill Venners, 羽生田 栄一, 水島 宏太, 長尾 高弘 |本 | 通販 | Amazon

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0