값 클래스는 정확히 하나의 val 파라미터가 필요해요
값 클래스는 정확히 하나의 val 파라미터가 필요해요 (E078: Value Class Needs Exactly One Val Parameter)
값 클래스의 주 생성자에 val 파라미터가 정확히 하나 있지 않으면 이 에러가 나요. 바로 그 파라미터가 값 클래스가 감싸는 값이 돼요.
본문
값 클래스(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)