case objectについて

Scala 3 (Dotty 0.26.0-RC1) 2.13.3 2.12.12
最終更新:2020年6月1日

[AD] scalapediaでは記事作成ボランティアを募集しています

この記事ではcase object について解説します。

case objectは、列挙型を定義するために使用する

case objectは、Scala 2系において列挙型を定義する際に活用されます。

sealed abstract class OS(val id: Int) object OS { case object Windows extends OS(0) case object MacOS extends OS(1) case object Linux extends OS(2) }

列挙型についてはこちらの記事を参照してください。

Scala 3系(Dotty)においては、enumキーワードが追加されたため、 列挙型を定義する際にcase objectを使用する必要はなくなりました。

enum OS { case Windows, MacOS, Linux }

したがって、現在、Scala 3においてこの用途ではcase objectを使用する必要はありません。

列挙型におけるcase object

caseキーワードを使用する効果

caseキーワードを付けることにより、toStringメソッドが自動生成されます。

自動生成されたtoStringメソッドを使用すると、クラス名と保持している値を返すようになります。

printlnするときに便利です。

objectキーワードを使用する効果

objectキーワードを付けることにより、当該クラスがインスタンス化され、 スコープ内で唯一のインスタンスであることが保証されます。

これらの特徴が、列挙型を定義するのに役立っているわけです。

サイト内検索