ScalaのSealed
#WIP
以下、5分ぐらいで調べただけの適当なメモmrsekut.icon
https://www.infoq.com/jp/articles/java-sealed-classes/
最近Javaに逆輸入された
Kotlinにもある
列挙型を定義する時に使う
code:scala
sealed trait Cards
case object Heart extends Cards
case object Diamond extends Cards
case object Club extends Cards
case object Spade extends Cards
これらのextedsした定義は同一ファイルに書く必要がある
match式を書いた時に、exhaustive checkされる
code:scala
val message = s match {
case Heart => "..."
case Diamond => "..."
case Club => "..."
case Spade => "..."
}
上記のコードは以下のようにsealedを付けなくても定義できる
code:scala
trait Cards
...
しかし、この場合は、match式でexhaustive checkされないらしい(未確認)
https://dev.classmethod.jp/articles/scala-algebra-data-type/
この記事だけじゃSealed Classの存在理由がわからん #??
あんまり関係ないけど、Scalaって代数的データ型ないのかmrsekut.icon