값 클래스의 파라미터는 var가 될 수 없어요
값 클래스의 파라미터는 var가 될 수 없어요 (E077: Value Class Parameter May Not Be A Var)
값 클래스의 파라미터를 val 대신 var로 선언하면 이 에러가 나요. 값 클래스는 정확히 하나의 val 파라미터를 가져야 해요.
본문
값 클래스(AnyVal을 상속하는 클래스)의 파라미터를 var로 선언하면 이 에러가 발생해요. 값 클래스는 val 파라미터가 정확히 하나 있어야 해요.
var는 가변성을 뜻하는데, 이는 값 클래스가 런타임에 표현되는 방식과 어울리지 않아요.
예시 (Example)
class Wrapper(var value: Int) extends AnyVal
에러 (Error)
-- [E077] Syntax Error: example.scala:1:18 -------------------------------------
1 |class Wrapper(var value: Int) extends AnyVal
| ^
| A value class parameter may not be a var
|-----------------------------------------------------------------------------
| Explanation (enabled by `-explain`)
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| A value class must have exactly one val parameter.
-----------------------------------------------------------------------------
해결 방법 (Solution)
var 대신 val을 쓰면 돼요.
// Use val instead of var
class Wrapper(val value: Int) extends AnyVal
가변성이 필요하다면 일반 클래스를 쓰는 게 맞아요.
// If you need mutability, use a regular class
class Wrapper(var value: Int)