E125: Class Cannot Extend Enum — 클래스는 enum을 상속할 수 없어요

E125: Class Cannot Extend Enum — 클래스는 enum을 상속할 수 없어요

클래스가 enum을 상속하려고 할 때 발생하는 에러예요.

출처: Scala 3 Reference

본문

클래스가 enum을 상속하려고 할 때 발생해요.

Scala 3에서 enum은 설계상 sealed라서, 같은 enum 선언 안에서 정의된 케이스들만 상속할 수 있어요. 외부 클래스는 enum을 상속할 수 없습니다.

예시

enum Color:
  case Red, Green, Blue

class CustomColor extends Color

에러

-- [E125] Syntax Error: example.scala:4:6 --------------------------------------
4 |class CustomColor extends Color
  |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |class CustomColor in package <empty> extends enum Color, but extending enums is prohibited.

해결 방법

enum 정의 안에서 새 케이스를 추가하면 돼요.

// Add new cases within the enum definition
enum Color:
  case Red, Green, Blue
  case Custom(rgb: Int)

외부에서 확장이 필요하다면 sealed trait으로 바꾸는 방법도 있어요.

// Or use a sealed trait if you need external extensibility
sealed trait Color
object Color:
  case object Red extends Color
  case object Green extends Color
  case object Blue extends Color

case class CustomColor(rgb: Int) extends Color