값 클래스는 정확히 하나의 val 파라미터가 필요해요

값 클래스는 정확히 하나의 val 파라미터가 필요해요 (E078: Value Class Needs Exactly One Val Parameter)

값 클래스의 주 생성자에 val 파라미터가 정확히 하나 있지 않으면 이 에러가 나요. 바로 그 파라미터가 값 클래스가 감싸는 값이 돼요.

출처: Scala 3 Reference

본문

값 클래스(AnyVal을 상속하는 클래스)의 주 생성자에 val 파라미터가 정확히 하나 있지 않으면 이 에러가 발생해요.

값 클래스는 주 생성자에 val 파라미터가 정확히 하나 있어야 해요. 그 하나의 파라미터가 값 클래스가 런타임에 표현하는 감싼 값(wrapped value)이 되죠.

예시 (Example)

class Wrapper() extends AnyVal

파라미터가 하나도 없는 값 클래스네요.

에러 (Error)

-- [E078] Syntax Error: example.scala:1:6 --------------------------------------
1 |class Wrapper() extends AnyVal
  |      ^
  |      Value class needs one val parameter

해결 방법 (Solution)

val 파라미터를 정확히 하나 추가해요.

// Add exactly one val parameter
class Wrapper(val value: Int) extends AnyVal

여러 값을 한 번에 담아야 한다면 값 클래스 대신 일반 클래스나 케이스 클래스(case class)를 쓰는 게 자연스러워요.

// For multiple values, use a regular class or case class
case class Wrapper(x: Int, y: Int)