Scalaのケースクラス・パターンマッチング・エラー処理(Option, Either, Try)・Implicit(暗黙の型変換・パラメータ)の使い方を徹底解説!サンプルコード付きで詳しく解説します。
Scalaの基本を学ぶ【その1】〜制御構文・クラス・オブジェクト・関数〜
Scalaの基本を学ぶ【その2】〜コレクション・リスト・マップ・セットの使い方〜
Scala:2.12
簡単なケースクラスによるデータ型の定義
sealed abstract class DayOfWeek
case object Sunday extends DayOfWeek
case object Monday extends DayOfWeek
case object Tuesday extends DayOfWeek
case object Wednesday extends DayOfWeek
case object Thursday extends DayOfWeek
case object Friday extends DayOfWeek
case object Saturday extends DayOfWeek
CやJavaとの列挙型との違いは、
パターンマッチングを用いて定義することで、
という3つの動作が同時に行える。
ある日の次の曜日を返すメソッドnextDayOfWeek
をパターンマッチを用いて定義している例:
def nextDayOfWeek(d: DayOfWeek): DayOfWeek = d match {
case Sunday => Monday
case Monday => Tuesday
case Tuesday => Wednesday
case Wednesday => Thursday
case Thursday => Friday
case Friday => Saturday
case Saturday => Sunday
}
実行例:
scala> nextDayOfWeek(Sunday)
res0: DayOfWeek = Monday