scala에서 case class와 enum 문법의 기능적 차이

Scala에서 case classenum은 둘 다 특정한 목적을 가지고 있지만, 각각의 기능적 차이점은 다음과 같습니다.

1. Case Class

case class는 불변 객체(immutable objects)를 쉽게 정의하고 패턴 매칭을 지원하는 클래스입니다. 주로 데이터 구조를 표현할 때 사용됩니다. case class는 다음과 같은 특징을 가집니다:

예시:

case class Person(name: String, age: Int)

val person = Person("Alice", 30)
val copyPerson = person.copy(age = 31)

2. Enum

Scala 3에서 도입된 enum은 열거형(Enumeration)을 정의하는 데 사용되며, 상수 집합을 정의할 수 있습니다. enum은 클래스의 상속 계층을 정의할 수 있으며, 각 enum 인스턴스는 고유한 경우를 나타냅니다.

특징:

예시:

enum Direction:
  case North, South, East, West

val direction: Direction = Direction.North

direction match {
  case Direction.North => println("Going North")
  case Direction.South => println("Going South")
  case Direction.East  => println("Going East")
  case Direction.West  => println("Going West")
}

기능적 차이점 요약: