E144: Case Class Missing Non-Implicit Parameter List — case 클래스에 비-implicit 파라미터 목록이 없어요
E144: Case Class Missing Non-Implicit Parameter List — case 클래스에 비-implicit 파라미터 목록이 없어요
case 클래스가 맨 앞의 비-implicit 파라미터 목록 없이, implicit 또는 using 파라미터 목록만 가지고 정의될 때 발생하는 에러예요.
본문
case 클래스가 맨 앞의 비-implicit 파라미터 목록 없이, implicit 또는 using 파라미터 목록만 가지고 정의될 때 발생해요.
Scala의 case 클래스는 맨 앞에 비-implicit 파라미터 목록이 하나 이상 있어야 해요. case 클래스는 주 생성자 파라미터를 바탕으로 equals, hashCode, toString, copy 같은 메서드를 자동 생성하는데, 이 메서드들이 일반(비-implicit) 파라미터를 기대하기 때문이에요.
예시
case class Example(using x: Int)
에러
-- [E144] Syntax Error: example.scala:1:11 -------------------------------------
1 |case class Example(using x: Int)
| ^^^^^^^
| A case class must have at least one leading non-implicit parameter list
|-----------------------------------------------------------------------------
| Explanation (enabled by `-explain`)
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| Example must have at least one leading non-implicit parameter list,
| if you're aiming to have a case class parametrized only by implicit ones, you should
| add an explicit () as the first parameter list to Example.
-----------------------------------------------------------------------------
해결 방법
using 절 앞에 명시적인 빈 파라미터 목록을 추가하면 돼요.
// Add an explicit empty parameter list before the using clause
case class Example()(using x: Int)
일반 파라미터를 추가할 수도 있고요.
// Or add a regular parameter
case class Example(value: String)(using x: Int)
파라미터가 필요 없다면 일반 클래스나 객체를 사용하는 걸 고려해보세요.
// If no parameters are needed, consider using a regular class or object
class Example(using x: Int)