E200: Final Local Def

E200: Final Local Def

이 에러는 지역 정의(메서드나 블록 안의 정의)에 final 수식어를 사용할 때 발생해요.

출처: Scala 3 Reference

본문

final 수식어는 클래스 멤버에게만 의미가 있어요. 서브클래스에서의 오버라이드를 막아 주기 때문이에요. 메서드 안의 지역 정의는 어차피 오버라이드될 수 없으므로, final은 아무 효과가 없고 허용되지 않아요.

예시 (Example)

def example(): Unit =
  final val local = 42

에러 (Error)

-- [E200] Syntax Error: example.scala:2:8 --------------------------------------
2 |  final val local = 42
  |        ^^^
  |        The final modifier is not allowed on local definitions

해결 방법 (Solution)

지역 정의에서 final 수식어를 제거해요.

def example(): Unit =
  val local = 42
  println(local)

인라인 상수가 필요하다면 inline val을 사용해요.

def example(): Unit =
  inline val local = 42
  println(local)